C++ 中計算所有滿足 num + Rev(num) = 10^N - 1 的 N 位數的數量
給定一個輸入數字 N。目標是找到所有 N 位數的數量,這些數字的和滿足 num + Rev(num) = 10N − 1
num+rev(num)=10N−1
例如
輸入
N=4
輸出
所有滿足 num + Rev(num) = 10N − 1 的 N 位數的數量為 - 90
解釋
The numbers would be − 1. 1188 + 8811 = 9999 2. 2277 + 7722 = 9999 3. 1278 + 8721 = 9999 ……...total 90 numbers
輸入
N=5
輸出
Count of all N digit numbers such that num + Rev(num) = 10N − 1 are − 0
解釋
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
**下面程式中使用的方案如下** -
對於任何 N 位數,如果該數字及其反轉數字中各個數字的和都為 9,則它與反轉數字的和將為 9N−1 = 999..N 次(N 個 9)。對於奇數 N,中間數字將與其自身相加。由於沒有兩個相同的整數的和為 9,因此答案將為 0。對於偶數 N,第 1 位和第 N 位、第 2 位和第 N-1 位、第 3 位和第 N-2 位…數字必須為 9。可能的組合為 (1+8), (2+7), (3+6), (4+5), (5+4) ,(6+3), (7+2), (8+1), (9+0)。答案將為 **9*10N/2 − 1**
將整數 N 作為輸入。
函式 digit_numbers(int N) 獲取 N 並返回所有滿足 num + Rev(num) = 10^N − 1 的 N 位數的數量。
將初始計數設定為 0。
如果 N 為奇數,則 N%2 為 1。返回 0。
否則,設定 count = 9 * pow(10, N/2 − 1)。
返回 count 作為結果。
示例
#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; }
輸出
如果我們執行上述程式碼,它將生成以下輸出 -
Count of all N digit numbers such that num + Rev(num) = 10^N − 1 are: 90
廣告