2017 多校訓練第三場 HDU 6063 RXD and math
阿新 • • 發佈:2019-01-22
打表找規律然後發現是n的k次冪
然後快速冪,實現的時候有一些地方會溢位,可以快速乘或者先進行取模運算
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7; ll mul_mod(ll a,ll b){ ll ans=0; while(b){ if(b&1){ ans=(ans+a)%mod; } a=(a+a)%mod; b>>=1; } return ans; } ll power_mod(ll a,ll b){ ll ans=1; while(b){ if(b&1){ ans=(mul_mod(ans,a))%mod; } a=(mul_mod(a,a))%mod; b>>=1; } return ans; } ll qpow(ll a,ll b){ ll ans=1; a%=mod; while(b){ if(b&1) ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return ans; } int main(int argc, char const *argv[]) { ll a,b; int cas=1; while(~scanf("%lld %lld",&a,&b)){ ll ans=qpow(a,b); printf("Case #%d: %lld\n",cas++,ans); } return 0; }