এই সমস্যায়, আমাদের একটি সংখ্যা N দেওয়া হয়েছে। আমাদের কাজ হল 2^n-এর শেষ দুটি অঙ্ক বের করার প্রোগ্রাম তৈরি করা C++-এ।
সমস্যা বিবরণ
শেষ দুটি অঙ্ক বের করতে। আমরা শুধু শেষ দুটি অঙ্কের গুণফল ব্যবহার করব। এবং অন্যগুলি ছেড়ে দিব গণনা ছোট রাখতে।
একটি উদাহরণ নিয়ে সমস্যাটি বুঝি,
ইনপুট: N = 12
আউটপুট: 96
ব্যাখ্যা
2^12 = 4096
সমাধান পদ্ধতি
সমস্যাটি সমাধান করতে, একটি সরাসরি পদ্ধতি হতে পারে 2^N-এর মান বের করা এবং তারপর ১০০ দিয়ে ভাগ করলে বাকি বের করা।
উদাহরণ
#include <iostream> using namespace std; int findLastDigit(int N){ int powerVal = 1; for(int i = 0; i < N; i++){ powerVal *= 2; } return powerVal%100; } int main() { int N = 14; cout<<"The last two digits of 2^"<<N<<" is "<<findLastDigit(N); return 0; }আউটপুট
The last two digits of 2^14 is 84
এই পদ্ধতি কার্যকর নয়, কারণ N-এর বড় মানের জন্য প্রোগ্রাম ওভারফ্লো হবে।
একটি ভালো পদ্ধতি হল শুধু মান থেকে ২ অঙ্ক বিবেচনা করা। এবং প্রতিটি ঘাতের জন্য দুধার গুণ করা।
2^14-এর ক্ষেত্রে, শেষ দুটি অঙ্ক 84। আমরা 84 কে দুধার গুণ করব পুরো সংখ্যার বদলে যা গণনা বাঁচাবে। তাই, (84*2)%100 = 68।
উদাহরণ
#include <iostream> using namespace std; int findLastDigit(int N){ int powerVal = 1; for(int i = 0; i < N; i++){ powerVal = (powerVal * 2)%100; } return powerVal; } int main() { int N = 15; cout<<"The last two digits of 2^"<<N<<" is "<<findLastDigit(N); return 0; }আউটপুট
The last two digits of 2^15 is 68