কম্পিউটার টিউটোরিয়াল

C++-এ পুনরাবৃত্তিমূলকভাবে n^x-এর অঙ্কের যোগফল, যেখানে n এবং x খুব বড়

আমাদের দুটি ধনাত্মক পূর্ণসংখ্যা ভেরিয়েবল দেওয়া আছে '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
  1. C++-এ একটি বড় সংখ্যা থেকে সব ৩-অঙ্কের পুনরাবৃত্ত সংখ্যা প্রিন্ট করা

  2. ২-এর ঘাত গঠিত Kটি সংখ্যা যাদের যোগফল N (C++)

  3. যোগফল এবং GCD দিয়ে দুটি সংখ্যা বের করা (C++)

  4. C++-এ কপি এলাইজন এবং রিটার্ন ভ্যালু অপ্টিমাইজেশন কী?