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

Tổng đệ quy của chữ số trong n ^ x, trong đó n và x rất lớn trong C ++

Chúng tôi được cung cấp các biến số nguyên dương là ‘num’ và ‘x’. Nhiệm vụ là tính toán đệ quy num ^ x sau đó thêm các chữ số của một số kết quả cho đến khi không đạt được chữ số duy nhất và chữ số duy nhất kết quả sẽ là đầu ra.

Hãy để chúng tôi xem các kịch bản đầu ra đầu vào khác nhau cho việc này -

Đầu vào - int num =2345, int x =3

Đầu ra - Tổng đệ quy của chữ số trong n ^ x, trong đó n và x rất lớn là:8

Giải thích - chúng ta được cung cấp các giá trị nguyên dương là num và x với các giá trị là 2345 và lũy thừa là 3. Trước hết, hãy tính 2345 ^ 3, tức là 12,895,213,625. Bây giờ, chúng ta sẽ thêm các chữ số này, tức là 1 + 2 + 8 + 9 + 5 + 2 + 1 + 3 + 6 + 2 + 5, tức là 44. Bây giờ chúng ta sẽ thêm 4 + 4 tức là 8. Vì chúng ta đã đạt được chữ số duy nhất nên , đầu ra là 8.

Đầu vào - int num =3, int x =3

Đầu ra - Tổng đệ quy của chữ số trong n ^ x, trong đó n và x rất lớn là:9

Giải thích - chúng ta được cung cấp các giá trị nguyên dương là num và x với các giá trị là 3 và lũy thừa là 3. Trước hết, hãy tính 3 ^ 3, tức là 9. Vì chúng ta đã đạt được chữ số duy nhất nên đầu ra là 9 và không cần tính thêm.

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

  • Nhập một biến số nguyên là num và x và chuyển dữ liệu vào hàm Recursive_Digit (num, x) để xử lý thêm.

  • Bên trong hàm Recursive_Digit (num, x)

    • Khai báo biến "total" bao lâu và đặt nó để gọi hàm total_digits (num) sẽ trả về tổng chữ số của một số được truyền dưới dạng đối số.

    • Khai báo biến dưới dạng tạm thời của kiểu long và đặt nó bằng power% 6

    • Kiểm tra IF tổng =3 HOẶC tổng =6 VÀ nguồn> 1 rồi trả về 9.

    • ELSE IF, power =1 thì trả về tổng.

    • ELSE IF, power =0 rồi trả về 1.

    • ELSE IF, temp - 0 rồi trả về lệnh gọi total_digits ((long) pow (total, 6))

    • ELSE, trả về total_digits ((dài) pow (tổng, nhiệt độ)).

  • Bên trong hàm long total_digits (long num)

    • Kiểm tra IF num =0 rồi trả về 0. Kiểm tra IF, num% 9 =0 rồi trả về 9.

    • Khác, trả về số% 9

Ví dụ

#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;
}

Đầu ra

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

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