Computer >> Máy Tính >  >> Lập trình >> C ++

Số bước n chữ số trong C ++

Số bước là một số có hiệu giữa các chữ số liên tiếp là 1. Bạn được cho một số n đại diện cho số chữ số. Bạn cần đếm tổng số bước có n chữ số.

Hãy xem một ví dụ.

Đầu vào

2

Đầu ra

17

Số thấp nhất có 2 chữ số là 10 và số cao nhất trong 2 chữ số là 99. Có 17 số bậc ở giữa chúng.

Thuật toán

  • Khởi tạo số n.
  • Khởi tạo số đếm bằng 0.
  • Tìm số n chữ số thấp nhất, tức là .., pow (10, n - 1).
  • Tìm số n chữ số cao nhất, tức là .., pow (10, n) - 1.
  • Viết một vòng lặp lặp lại từ số n chữ số thấp nhất đến số n chữ số cao nhất.
    • Kiểm tra xem số hiện tại có phải là số bước hay không.
    • Kiểm tra sự khác biệt giữa các cặp chữ số liên tiếp trong số.
    • Nếu kết quả của bất kỳ sự khác biệt nào không phải là 1, thì trả về false, còn lại là true.
    • Tăng số lượng nếu số hiện tại là số bước.
  • Trả lại số lượng.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong 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;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

32