C++中各位數字之和為十的第n個數


各位數字之和等於10的數字是

19, 28, 37, 46, 55, 64, 73, 82, 91, 等等…

觀察這個序列,每個數字都增加9。在上述序列中,有一些數字在增加9的過程中,各位數字之和並不等於10。但是,你會得到所有各位數字之和等於10的數字。

因此,我們可以使用一個迴圈,每次遞增9,並檢查各位數字之和,找到第n個數字。讓我們看一些例子

輸入

3
7

輸出

37
73

演算法

  • 初始化數字**n**
  • 將計數器初始化為0。
  • 編寫一個從**19**開始迭代的迴圈
    • 如果當前數字的各位數字之和為10,則將計數器加1。
    • 如果計數器等於n,則返回當前數字。
    • 將迭代變數加9。

實現

以下是上述演算法在C++中的實現

#include <bits/stdc++.h>
using namespace std;
int findNthNumber(int n) {
   int count = 0, i = 19;
   while (true) {
      int sum = 0;
      for (int number = i; number > 0; number = number / 10) {
         sum = sum + number % 10;
      }
      if (sum == 10) {
         count++;
      }
      if (count == n) {
         return i;
      }
      i += 9;
   }
   return -1;
}
int main() {
   int n = 7;
   cout << findNthNumber(7) << endl;
   return 0;
}

輸出

如果執行以上程式碼,則會得到以下結果。

73

更新於:2021年10月22日

288 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.