C++中統計首位數字相同的數字個數
給定一個區間[first, last]。目標是在此區間內查詢首位數字相同的數字的個數。例如,232的首位數字與2相同。
我們將透過從i=first遍歷到i=last來實現這一點。對於每個數字,我們將比較它的首位數字與最後一位數字,如果它們相同,則遞增計數。
讓我們透過例子來理解。
輸入 − first=8 last=40
輸出 − 首位數字相同的數字個數 − 5
解釋 − 8到40之間首位數字相同的數字 − (8, 11, 22, 33, 44)
8, 9, 11, 22, 33
輸入 − first=100 last=200
輸出 − 首位數字相同的數字個數:5
解釋 − 100到200之間首位數字相同的數字 − (101,111,121,131,141,151,161,171,181,191,202)
101, 111, 121, 131, 141, 151, 161, 171, 181, 191.
下面程式中使用的演算法如下
我們使用兩個整數first和last來定義範圍[first,last]。
函式getFirstDigit(int num)接受一個數字並返回它的首位數字。
當num>=10時,將num除以10。最後,num將包含首位數字。返回此值。
函式getCount(int fst,int lst)接受範圍變數並返回首位數字相同的數字的個數。
將初始計數設定為0。
使用for迴圈從i=fst開始到i=lst結束,對於每個i,透過呼叫getFirstDigit(i)計算其首位數字並存儲在fdigit中。(fdigit=getFirstDigit(i))。
計算最後一位數字為ldigit=i%10。
如果ldigit==fdigit,則表示它們相同。遞增計數。
返回計數作為結果。
示例
#include <bits/stdc++.h> using namespace std; //to find starting digit int getFirstDigit(int num){ while (num >= 10) { num = num/ 10; } return num; } int getCount(int fst,int lst){ int count=0; for(int i=fst;i<=lst;i++){ int fdigit=getFirstDigit(i); int ldigit=i%10; //to get last digit if(fdigit==ldigit) //if both are equal increment count { ++count; } } return count; } int main(){ int first = 10, last = 23; cout<<"Numbers with same first and last digits:"<<getCount(first, last); return 0; }
輸出
如果我們執行以上程式碼,它將生成以下輸出:
Numbers with same first and last digits:2
廣告