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

จำนวนก้าวเลข n หลักใน C++


หมายเลขก้าวคือตัวเลขที่ความแตกต่างระหว่างหลักที่ต่อเนื่องกันคือ 1 คุณจะได้รับตัวเลข n แทนจำนวนหลัก คุณต้องนับจำนวนก้าวทั้งหมดที่มีตัวเลข n หลัก

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

ป้อนข้อมูล

2

ผลผลิต

17

จำนวนต่ำสุดของ 2 หลักคือ 10 และจำนวนสูงสุด 2 หลักคือ 99 มีตัวเลขขั้นบันได 17 ตัวคั่นระหว่างกัน

อัลกอริทึม

  • เริ่มต้นหมายเลข n.
  • เริ่มต้นการนับเป็น 0
  • หาจำนวนต่ำสุดของ n หลัก เช่น pow(10, n - 1).
  • ค้นหาจำนวนสูงสุด n หลัก เช่น pow(10, n) - 1.
  • เขียนลูปที่วนซ้ำจากตัวเลข n หลักต่ำสุดไปยังตัวเลข n หลักสูงสุด
    • ตรวจสอบว่าตัวเลขปัจจุบันเป็นตัวเลขก้าวหรือไม่
    • ตรวจสอบความแตกต่างระหว่างตัวเลขคู่ที่ต่อเนื่องกันในตัวเลข
    • หากผลลัพธ์ของความแตกต่างใดๆ ไม่ใช่ 1 ให้คืนค่า false มิฉะนั้น true
    • เพิ่มการนับถ้าตัวเลขปัจจุบันเป็นตัวเลขก้าว
  • คืนการนับ

การนำไปใช้

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

#include <bits/stdc++.h>
using namespace std;
bool isSteppingNumber(int n) {
   int previousDigit = -1;
   while (n) {
      int currentDigit = n % 10;
      if (previousDigit != -1 && abs(previousDigit - currentDigit) != 1) {
         return false;
      }
      previousDigit = currentDigit;
      n /= 10;
   }
   return true;
}
int getSteppingNumbersCount(int n) {
   int lowestNumber = pow(10, n - 1), highestNumber = pow(10, n) - 1;
   int count = 0;
   for (int i = lowestNumber; i <= highestNumber; i++) {
      if (isSteppingNumber(i)) {
         count += 1;
      }
   }
   return count;
}
int main() {
   int n = 3;
   cout << getSteppingNumbersCount(n) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

32