a^b mod 1337 ক্যালকুলেট করতে হবে, যেখানে a একটি ধনাত্মক পূর্ণসংখ্যা আর b অত্যধিক বড় একটি ধনাত্মক পূর্ণসংখ্যা যা অ্যারে আকারে দেওয়া আছে। উদাহরণ: a = 2, b = [1,0] হলে আউটপুট ১০২৪।
সমাধানের ধাপগুলো:
powerMod()মেথড বানান যাbaseআরpowerনেবে:m := 1337, ret := 1power != 0रहने পর্যন্ত:- যদি
powerবিজোড়,ret := (ret * base) % m base := (base * base) % mpower := power / 2
- যদি
retফেরত দিন।
superPower()মেথড বানান যাaআরbনেবে:- যদি
b.size() == 0, ১ ফেরত দিন। last := b-এর শেষ উপাদান।b-এর শেষ উপাদান ডিলিট করুন।(powerMod(superPower(a, b), 10) * powerMod(a, last)) % 1337ফেরত দিন।
- যদি
উদাহরণ (C++)
#include <bits/stdc++.h> using namespace std; typedef long long int lli; class Solution { public: int powerMod(lli base, lli power){ lli mod = 1337; lli ret = 1; while(power){ if(power & 1) ret = (ret * base) % mod; base = (base * base) % mod; power >>= 1; } return ret; } int superPow(int a, vector<int>& b) { if(b.size() == 0) return 1; int last = b.back(); b.pop_back(); return (powerMod(superPow(a, b), 10) * powerMod(a, last)) % 1337; } }; main(){ Solution ob; vector<int> v = {1,0}; cout << (ob.superPow(2, v)); }ইনপুট
2 [1,0]
আউটপুট
1024