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

Đếm tất cả các số có N chữ số sao cho num + Rev (num) =10 ^ N - 1 trong C ++

Cho một số N làm đầu vào. Mục tiêu là tìm tổng số tất cả N chữ số có tổng Đếm tất cả N chữ số sao cho num + Rev (num) =10 N - 1

num + rev (num) =10 N −1

Ví dụ

Đầu vào

N=4

Đầu ra

Đếm tất cả N số chữ số sao cho num + Rev (num) =10 N - 1 là - 90

Giải thích

The numbers would be −

1. 1188 + 8811 = 9999
2. 2277 + 7722 = 9999
3. 1278 + 8721 = 9999
……...total 90 numbers

Đầu vào

N=5

Đầu ra

Count of all N digit numbers such that num + Rev(num) = 10N − 1 are − 0

Giải thích

As N is odd, there will be no such number as the middle element will be
added to itself and cannot have sum as 9.
Ex. 148+841=989

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

Đối với bất kỳ chữ số N nào, tổng của nó có số đảo ngược sẽ là 9N − 1 =999..N lần nếu tổng các chữ số riêng lẻ trong cả hai số và số đảo ngược của nó là 9. Trong trường hợp N lẻ, chữ số ở giữa sẽ được thêm vào chính nó. . Vì không có số nguyên nào giống nhau có tổng là 9 nên câu trả lời sẽ là 0. Trong trường hợp N chẵn, các cặp số 1-N, 2-N-1, 3-N-2 .. Các chữ số sẽ phải là 9. Các cặp có thể có sẽ là (1 + 8), (2 + 7), (3 + 6), (4 + 5), (5 + 4), (6 + 3), (7 + 2), (8 + 1), (9 + 0). Câu trả lời sẽ là 9 * 10 N / 2 - 1

  • Lấy một số nguyên N làm đầu vào.

  • Hàm digit_numbers (int N) nhận N và trả về số tất cả N chữ số, chẳng hạn như num + Rev (num) =10 ^ N - 1.

  • Lấy số lượng ban đầu là 0.

  • Nếu N lẻ, thì N% 2 là 1. Trả về 0.

  • Số bộ khác =9 * pow (10, N / 2 - 1).

  • Kết quả là số lượt trả lại.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int digit_numbers(int N){
   int count = 0;
   if (N % 2 == 1){
      return 0;
   } else {
      count = 9 * pow(10, N/2 − 1);
   }
   return count;
}
int main(){
   int N = 4;
   cout<<"Count of all N digit numbers such that num + Rev(num) = 10^N − 1 are: "<<digit_numbers(N);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of all N digit numbers such that num + Rev(num) = 10^N − 1 are: 90