>  기사  >  백엔드 개발  >  C++를 사용하여 구현된 n^x의 숫자 합을 재귀적으로 찾습니다. 여기서 n과 x는 모두 매우 큽니다.

C++를 사용하여 구현된 n^x의 숫자 합을 재귀적으로 찾습니다. 여기서 n과 x는 모두 매우 큽니다.

WBOY
WBOY앞으로
2023-09-11 08:29:02745검색

C++를 사용하여 구현된 n^x의 숫자 합을 재귀적으로 찾습니다. 여기서 n과 x는 모두 매우 큽니다.

양의 정수 변수 "num"과 "x"가 주어졌습니다. 작업은 num^x를 재귀적으로 계산한 다음 결과 숫자의 숫자가 한 자리에 도달할 때까지 더하는 것입니다. 결과 한 자리는 출력으로 제공됩니다.

이에 대한 다양한 입출력 시나리오를 살펴보겠습니다. -

Input − int num = 2345, int x = 3

Output − n에 있는 숫자의 재귀적 합 ^x, 여기서 n과 x는 매우 큽니다. : 8

Explanation− 값이 2345이고 거듭제곱이 3인 양의 정수 값 ​​num 및 x가 주어졌습니다. 먼저 2345^3, 즉 12,895,213,625를 계산하세요. 이제 이 숫자를 더하면 1 + 2 + 8 + 9 + 5 + 2 + 1 + 3 + 6 + 2 + 5, 즉 44가 됩니다. 이제 4 + 4를 더해 8이 됩니다. 한 자릿수에 도달했으므로 출력은 8입니다.

Input− int num = 3, int x = 3

Output − n과 x가 매우 큰 n^x에 있는 숫자의 재귀적 합: 9

Explanation− 양의 정수가 주어집니다. num 및 x 값, 값은 3이고 거듭제곱은 3입니다. 먼저 3^3을 계산하면 9가 됩니다. 이미 한 자리 숫자를 얻었으므로 출력은 9이고 더 이상 계산이 필요하지 않습니다.

아래 프로그램에서 사용된 방법은 다음과 같습니다

  • 정수 변수 num과 x를 입력하고 추가 처리를 위해 데이터를 Recursive_Digit(num, x) 함수에 전달합니다.

  • Recursive_Digit(num, x) 함수 내에서
    • 변수 'total'을 길게 선언하고 인수로 전달된 숫자의 숫자 합계를 반환하는 total_digits(num) 함수를 호출하도록 설정합니다.

    • 변수를 long 유형의 temp로 선언하고 6의 % 거듭제곱으로 설정합니다.

    • IF Total = 3 OR Total = 6 AND power > 1을 확인하고 9를 반환합니다.

    • ELSE IF, 거듭제곱 = 1이면 합계를 반환합니다.

    • li>
    • ELSE IF, power = 0이고 1을 반환합니다.

    • ELSE IF, temp - 0 그런 다음 total_digits((long)pow(total, 6))

    • 호출을 반환하고 그렇지 않으면 total_digits((long)pow(total, temp))를 반환합니다.

  • 내부 함수 long Total_digits(long num)

    • 은 IF num = 0인지 확인하고 0을 반환합니다. IF, num % 9 = 0을 확인하고 9를 반환합니다.

    • 그렇지 않으면 num % 9를 반환합니다.

  • 예제 H2>
    #include <bits/stdc++.h>
    using namespace std;
    long total_digits(long num){
       if(num == 0){
          return 0;
       }
       if(num % 9 == 0){
          return 9;
       }
       else{
          return num % 9;
       }
    }
    long Recursive_Digit(long num, long power){
       long total = total_digits(num);
       long temp = power % 6;
       if((total == 3 || total == 6) & power > 1){
          return 9;
       }
       else if (power == 1){
          return total;
       }
       else if (power == 0){
          return 1;
       }
       else if (temp == 0){
          return total_digits((long)pow(total, 6));
       }
       else{
          return total_digits((long)pow(total, temp));
       }
    }
    int main(){
       int num = 2345;
       int x = 98754;
       cout<<"Recursive sum of digit in n^x, where n and x are very large are: "<<Recursive_Digit(num, x);
       return 0;
    }

    Output

    위 코드를 실행하면 다음과 같은 출력이 생성됩니다

    Recursive sum of digit in n^x, where n and x are very large are: 1

    위 내용은 C++를 사용하여 구현된 n^x의 숫자 합을 재귀적으로 찾습니다. 여기서 n과 x는 모두 매우 큽니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제