ตัวเลขที่ผลรวมหลักเท่ากับ 10 คือ
19, 28, 37, 46, 55, 64, 73, 82, 91, ฯลฯ..,
หากคุณสังเกตอนุกรมนี้ แต่ละตัวเลขจะเพิ่มขึ้น 9 มีตัวเลขในลำดับข้างต้นซึ่งผลรวมหลักไม่เท่ากับ 10 ขณะที่เพิ่มขึ้น 9 แต่คุณจะได้ตัวเลขทั้งหมดที่มีผลรวมหลักเท่ากับ 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