AB28. 快速幂
描述
请你计算 的值。输入描述
第一行输入一个正整数 ,代表询问次数。输出描述
对于每次询问,输出一个整数,代表 的值。示例1
输入:
2 2 2 6 3 4 10
输出:
4 1
C++ 解法, 执行用时: 75ms, 内存消耗: 1036KB, 提交时间: 2022-05-05
#include<bits/stdc++.h> int main() { int n; scanf("%d",&n); long long a,b,p; for(int i=0;i<n;i++) {long long sum=1; scanf("%lld %lld %lld",&a,&b,&p); //a%=p;b%=p; while(b>0) { if(b&1) { sum=sum*a%p; } b=b>>1; a=a*a%p; } printf("%lld\n",sum); } return 0; }
C++ 解法, 执行用时: 75ms, 内存消耗: 1144KB, 提交时间: 2022-04-18
#include<cstdio> int main() { int q, a, b, p; scanf("%d", &q); while(q--){ scanf("%d%d%d", &a, &b, &p); int res = 1; while(b){ if(b&1) res = 1ll*res*a % p; a = 1ll*a*a % p ; b >>= 1; } printf("%d\n", res); } return 0; }
C++ 解法, 执行用时: 77ms, 内存消耗: 1108KB, 提交时间: 2022-05-24
#include<iostream> using namespace std; typedef long long ll; int main() { int q; ll a,b,p; scanf("%d",&q); for(int i=0;i<q;i++) { ll m=1; scanf("%lld%lld%lld",&a,&b,&p); for(ll i=0;i<b;b=b/2) { if(b%2!=0) m=m*a%p; a=a*a%p; } printf("%lld\n",m); } return 0; }
C++ 解法, 执行用时: 77ms, 内存消耗: 1140KB, 提交时间: 2022-04-02
#include<bits/stdc++.h> using namespace std; typedef long long ll; int p; ll ksm(ll x,ll y) { ll result=1; while(y) { if(y%2==1) { result=result*x%p; } y>>=1; x=x*x%p; } return result; } int main() { ll q,a,b; scanf("%lld",&q); for(int i=0;i<q;i++) { scanf("%lld%lld%lld",&a,&b,&p); printf("%lld\n",ksm(a,b)); } return 0; }
C++ 解法, 执行用时: 77ms, 内存消耗: 1144KB, 提交时间: 2022-06-19
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll fun(ll x, ll y, ll z) { ll ans=1; x=x%z; while(y) { if(y&1) { ans=ans*x%z; } y>>=1; x=x*x%z; } return ans; } int main() { int n; cin>>n; while(n--) { ll x,y,z; scanf("%lld%lld%lld",&x,&y,&z); printf("%lld\n",fun(x,y,z)); } return 0; }