C++中計算範圍內首位數字等於末位數字的個數


給定一個從起始值到結束值的數字範圍。目標是找到首位數字等於末位數字並且落在[起始值, 結束值]範圍內的數字個數。

如果一位數在範圍內,則將其計數。

讓我們透過例子來理解。

例如

輸入 - 起始值 = 100,結束值 = 200

輸出 - 範圍內首位數字等於末位數字的個數為:10

解釋 - 數字將是

101, 121, 131, 141, 151, 161, 171, 181 和 191。

輸入 - 起始值 = 1,結束值 = 10

輸出 - 範圍內首位數字等於末位數字的個數為:9

解釋 - 所有一位數都將被計數。1, 2, 3, 4, 5, 6, 7, 8, 9

下面程式中使用的方法如下

如果所有一位數都在[起始值,結束值]範圍內,則將它們計數。現在,對於每個數字,檢查首位和末位數字。如果首位數字大於末位數字,則將8 + val/10新增到計數中;如果小於,則將9 + val/10新增到計數中。這裡val是在對range(int val)的遞迴呼叫中的當前數字。

  • 將整數起始值和結束值作為範圍變數。
  • 設定 count = range(結束值) - range(起始值)。
  • 函式 range(int val) 獲取整數並返回範圍內首位數字等於末位數字的個數。
  • 將初始計數設定為0。
  • 將結束值設定為最後一位數字,即val%10。
  • 如果它是一位數(小於10),則返回val。
  • 現在使用while迴圈計算起始值=val%10。將val減少10。因此,起始值將包含首位數字。
  • 現在,如果起始值<=結束值,則將9 + set_val / 10新增到計數中。
  • 現在,如果起始值>結束值,則將8 + set_val / 10新增到計數中。
  • 最後,返回計數作為結果。

示例

線上演示

#include <iostream>
using namespace std;

int range(int val) {
   int count = 0;
   int start;
   int end = val % 10;
   int set_val = val;

   if (val < 10) {
      return val;
   }
   end = val % 10;
   while (val) {
      start = val % 10;
      val = val / 10;
   }
   if (start <= end) {
      count = 9 + set_val / 10;
   } else {
      count = 8 + set_val / 10;
   }
   return count;
}
int main() {
   int start = 10, end = 50;
   int count = range(end) - range(start);
   cout << "Count of Numbers in Range where first digit is equal to last digit of the number are: " << count;
   return 0;
}

如果我們執行上面的程式碼,它將生成以下輸出

輸出

Count of Numbers in Range where first digit is equal to last digit of the number are: 4

更新於: 2021年1月29日

422 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告