Digits
\(Digits\)
这道题目比较简单,首先先打出来暴力,然后一看\(b\)的范围,瞬间想到快速幂。
快速幂的精髓是什么?
取模啊,再一看\(k\)的范围,大胆猜想模一个大于八位数的能被十整除的数字,然后发现对答案没有影响,直接做完。
代码:
#include<iostream> #include<cstdio> #define ll long long using namespace std; const ll MOD=1e9,N=1e5+100; inline ll qpow(ll a,ll p) { ll base=a,ans=1; while (p) { if (p&1) ans=(ans%MOD*base%MOD)%MOD; base=(base%MOD*base%MOD)%MOD; p=p>>1; } return ans%MOD; } ll n,k,x,now; ll a[N],b[N],will[15]; int main() { scanf("%lld%lld",&n,&k); for (int i=1;i<=n;i++) scanf("%lld%lld",a+i,b+i); scanf("%lld",&x); ll ans=0; for (int i=1;i<=n;i++) ans=(ans+a[i]*qpow(x,b[i])%MOD)%MOD; int num=0; while (ans) { will[++num]=ans%10; ans/=10; } for (int i=k;i>=1;i--) printf("%lld\n",will[i]); return 0; }
转载于//www.cnblogs.com/last-diary/p/11405617.html
还没有评论,来说两句吧...