所有N位数字的计数,使得C ++中的num + Rev(num)= 10 ^ N-1

给定数字N作为输入。目标是找到所有N位数字的计数,该计数具有所有N位数字的总和,例如num +Rev(num)= 10 N − 1

num +rev(num)= 10 N -1

例如

输入值

N=4
输出结果

所有N位数字的计数,例如num + Rev(num)= 10 N − 1是− 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,因此答案将为0。在偶数N的情况下,第一对N,第二对N-1,第三对N-2对。数字必须为9。可能的对将是(1 + 8),(2 + 7),(3 + 6),(4 + 5),(5 + 4),(6 + 3),(7 + 2),(8 + 1), (9 + 0)。答案将是9 * 10 N / 2 − 1

  • 以整数N作为输入。

  • 功能 digit_numbers(int N) 取N并返回所有N个数字的计数,例如num + Rev(num) = 10 ^ N − 1。

  • 将初始计数设为0。

  • 如果N为奇数,则N%2为1。返回0。

  • 其他设置计数= 9 * pow(10,N / 2 − 1)。

  • 返回计数作为结果。

示例

#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

猜你喜欢