ตัวเลขที่ผลรวมหลักเท่ากับ 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