আমাদের দুটি ধনাত্মক পূর্ণসংখ্যা ভেরিয়েবল দেওয়া আছে 'num' এবং 'x'। কাজটি হল পুনরাবৃত্তিমূলকভাবে num ^ x গণনা করা, তারপর ফলাফল সংখ্যাটির অঙ্কগুলিকে যোগ করা যতক্ষণ না একক অঙ্ক পাওয়া যায় এবং সেই একক অঙ্কটিই আউটপুট হবে।
বিভিন্ন ইনপুট-আউটপুট পরিস্থিতি দেখে নিই -
ইনপুট - int num = 2345, int x = 3
আউটপুট - বড় n এবং x-এর জন্য n^x-এ পুনরাবৃত্তিমূলক অঙ্কের যোগফল: 8
ব্যাখ্যা - আমাদের ধনাত্মক পূর্ণসংখ্যা মান দেওয়া আছে num এবং x যার মানগুলো যথাক্রমে 2345 এবং ঘাত 3। প্রথমে 2345 ^ 3 অর্থাৎ 12,895,213,625 গণনা করুন। এখন এই অঙ্কগুলো যোগ করুন: 1 + 2 + 8 + 9 + 5 + 2 + 1 + 3 + 6 + 2 + 5 = 44। এখন 4 + 4 = 8। যেহেতু একক অঙ্ক পাওয়া গেছে, তাই আউটপুট হল 8।
ইনপুট - int num = 3, int x = 3
আউটপুট - বড় n এবং x-এর জন্য n^x-এ পুনরাবৃত্তিমূলক অঙ্কের যোগফল: 9
ব্যাখ্যা - আমাদের ধনাত্মক পূর্ণসংখ্যা মান দেওয়া আছে num এবং x যার মানগুলো যথাক্রমে 3 এবং ঘাত 3। প্রথমে 3 ^ 3 = 9 গণনা করুন। যেহেতু একক অঙ্ক পাওয়া গেছে, তাই আউটপুট হল 9 এবং আরও কোনো গণনার প্রয়োজন নেই।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি
- একটি পূর্ণসংখ্যা ভেরিয়েবল num এবং x ইনপুট নিন এবং ডেটা Recursive_Digit(num, x) ফাংশনে পাস করুন további প্রক্রিয়াকরণের জন্য।
- Recursive_Digit(num, x) ফাংশনের ভিতরে:
- 'total' ভেরিয়েবল ঘোষণা করুন long টাইপের এবং সেটি total_digits(num) ফাংশন কল করে সেট করুন যা আর্গুমেন্ট হিসেবে পাস করা সংখ্যার অঙ্কের যোগফল রিটার্ন করবে।
- temp নামের একটি ভেরিয়েবল long টাইপের ঘোষণা করুন এবং সেটি power % 6 দিয়ে সেট করুন।
- চেক করুন IF total = 3 OR total = 6 AND power > 1 তবে 9 রিটার্ন করুন।
- ELSE IF, power = 1 তবে total রিটার্ন করুন।
- 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 রিটার্ন করুন।
উদাহরণ
#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;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি জেনারেট হবে
Recursive sum of digit in n^x, where n and x are very large are: 1