Uva 11029 Leading and Trailing (求n^k前3位和后3位)
Posted simpleknight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uva 11029 Leading and Trailing (求n^k前3位和后3位)相关的知识,希望对你有一定的参考价值。
题意:给你 n 和 k ,让你求 n^k 的前三位和后三位
思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0
资料:求n^k的前m位 博客连接地址
代码:
#include <iostream> #include <cmath> #include <cstdio> #include <algorithm> #define ll long long using namespace std; ll qmod(ll a,ll b,ll mod) { ll ans=1; while(b) { if(b%2) { ans=(ans*a)%mod; } b=b/2; a=(a*a)%mod; } return ans; } int main() { int t; cin>>t; while(t--) { ll n,k; scanf("%lld %lld",&n,&k); double a=k*log10((double)n); a=a-floor(a); double ans1 = pow(10,a)*100; ll ans2 = qmod(n,k,1000); cout<<(ll)ans1<<"..."; printf("%03lld\n",ans2); } return 0; }
以上是关于Uva 11029 Leading and Trailing (求n^k前3位和后3位)的主要内容,如果未能解决你的问题,请参考以下文章
LightOJ 1282 Leading and Trailing (数学)