Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 num + Rev(num) =10^N - 1인 모든 N 자리 숫자의 개수

<시간/>

입력으로 숫자 N이 주어졌습니다. 목표는 num + Rev(num) =10 N 과 같은 모든 N 자리 숫자의 합계가 있는 모든 N 자리 숫자의 개수를 찾는 것입니다. − 1

num+rev(num)=10 N −1

예를 들어

입력

N=4

출력

num + Rev(num) =10 N 과 같은 모든 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 자리 숫자에 대해 역수와 그 숫자의 합은 9N−1 =999..N 번이 됩니다. 두 숫자의 개별 자릿수와 그 역수 합이 9이면 N 번입니다. 홀수 N의 경우 중간 자릿수가 자체에 추가됩니다. . 같은 정수는 합이 9가 아니므로 답은 0입니다. 짝수 N인 경우 1st−Nth, 2nd−N−1th, 3rd−N−2th..의 쌍은 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을 취하고 num + Rev(num) =10^N − 1이 되는 모든 N 자리 숫자의 개수를 반환합니다.

  • 초기 카운트를 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