Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวเลขลำดับที่ n ที่ผลรวมหลักเท่ากับ 10 ใน C++

โจทย์

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