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

จำนวนหลักของตัวเลขลำดับที่ n ที่ประกอบด้วยเลข 1, 2, 3, 4 ใน C++

โจทย์

เราต้องการหาจำนวนหลักของตัวเลขลำดับที่ n ที่ประกอบด้วยเลข 1, 2, 3, และ 4 เท่านั้น

ลำดับของตัวเลขด้วย 4 หลักดังกล่าวคือ

1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24...

เราต้องการหาจำนวนหลักของตัวเลขลำดับที่ n จากลำดับข้างต้น หากสังเกตรูปแบบอย่างละเอียด จะพบว่า

  • มี 4 ตัวเลขที่มี 1 หลัก
  • มี 16 ตัวเลขที่มี 2 หลัก
  • รูปแบบต่อไปเป็นกำลังของ 4

มาดูตัวอย่าง

อินพุต

7

เอาต์พุต

2

ตัวเลขลำดับที่ 7 ในลำดับคือ 13 และมี 2 หลัก

อัลกอริธึม

  • กำหนดตัวเลข n
  • กำหนดตัวแปร 2 ตัว หนึ่งเก็บผลลัพธ์ อีกตัวเก็บผลรวมตัวเลขในลำดับ
  • สร้างลูปที่เพิ่มตัวแปรวนรอบด้วยกำลังของ 4
    • บวกจำนวนปัจจุบันเข้าไปในตัวแปรผลรวม
    • ถ้าผลรวมมากกว่าหรือเท่ากับ n ให้หยุดลูป
    • เพิ่ม 1 เข้าไปในผลลัพธ์ เนื่องจากชุดตัวเลขถัดไปจะมีหลักมากกว่าชุดก่อนหน้า 1 หลัก
  • คืนค่าผลลัพธ์

การนำไปใช้งาน

ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน C++

#include <bits/stdc++.h> 
using namespace std; 

int getDigitsCount(int n) { 
    int i, result = 1, sum = 0; 
    for (i = 4; ; i *= 4) { 
        sum += i; 
        if (sum >= n) { 
            break; 
        } 
        result += 1; 
    } 
    return result; 
} 

int main() { 
    int n = 57; 
    cout << getDigitsCount(n) << endl; 
    return 0; 
}

ผลลัพธ์

หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้

3