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
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP