Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cari secara rekursif jumlah digit bagi n^x, di mana n dan x kedua-duanya sangat besar, dilaksanakan menggunakan C++

Cari secara rekursif jumlah digit bagi n^x, di mana n dan x kedua-duanya sangat besar, dilaksanakan menggunakan C++

WBOY
WBOYke hadapan
2023-09-11 08:29:02745semak imbas

Cari secara rekursif jumlah digit bagi n^x, di mana n dan x kedua-duanya sangat besar, dilaksanakan menggunakan C++

Kami diberi pembolehubah integer positif "num" dan "x". Tugasnya adalah untuk mengira secara rekursif num^x dan kemudian menambah digit nombor yang terhasil sehingga mencapai satu digit, digit tunggal yang terhasil akan diberikan sebagai output.

Mari kita lihat pelbagai senario input-output untuk ini -

Input − int num = 2345, int x = 3

Output − n jumlah rekursif ^x sangat besar : 8

Penjelasan− Kami diberi nilai integer positif num dan x dengan nilai 2345 dan kuasa 3. Pertama, hitung 2345^3 iaitu 12,895,213,625. Sekarang, kita tambah nombor ini, iaitu 1 + 2 + 8 + 9 + 5 + 2 + 1 + 3 + 6 + 2 + 5, iaitu 44. Sekarang kita akan menambah 4 + 4, iaitu 8. Oleh kerana kita telah mencapai satu digit, output ialah 8.

Input− int num = 3, int x = 3

Output − Jumlah rekursif nombor dalam n^x di mana n dan x adalah sangat besar: 9

−Penjelasan Kita diberi positif nilai num dan x, nilai ialah 3 dan kuasa ialah 3. Mula-mula hitung 3^3, iaitu 9. Memandangkan kita sudah mendapat digit tunggal, output ialah 9 dan tiada pengiraan lanjut diperlukan.

Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut

  • Masukkan pembolehubah integer num dan x dan hantar data ke fungsi Recursive_Digit(num, x) untuk pemprosesan selanjutnya.

  • Di dalam fungsi Recursive_Digit(num, x)
    • isytiharkan pembolehubah 'jumlah' seberapa lama dan tetapkannya untuk memanggil fungsi total_digit(num) yang akan mengembalikan jumlah angka nombor yang diluluskan sebagai argumen.

    • Isytiharkan pembolehubah sebagai suhu jenis panjang dan tetapkannya dengan % kuasa 6

    • Semak JIKA Jumlah = 3 ATAU Jumlah = 6 DAN kuasa > 1 dan kembalikan 9.

    • LAIN JIKA, kuasa = 1, kemudian kembalikan Jumlah.

    • li>
    • LAIN JIKA, kuasa = 0 dan pulangkan 1. .

    • Fungsi dalaman panjang Jumlah_digit(bilangan panjang)
    • menyemak JIKA nombor = 0 dan mengembalikan 0. Semak JIKA, nombor % 9 = 0 dan kembalikan 9.
  • Jika tidak, kembalikan nombor % 9

    • Contoh
    • #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

    • Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut
    Recursive sum of digit in n^x, where n and x are very large are: 1
  • Atas ialah kandungan terperinci Cari secara rekursif jumlah digit bagi n^x, di mana n dan x kedua-duanya sangat besar, dilaksanakan menggunakan C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam