Rumah >pembangunan bahagian belakang >C++ >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.
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.
Masukkan pembolehubah integer num dan x dan hantar data ke fungsi Recursive_Digit(num, x) untuk pemprosesan selanjutnya.
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.
LAIN JIKA, kuasa = 0 dan pulangkan 1. .
Jika tidak, kembalikan nombor % 9
#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
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!