首页 > 代码库 > Uva 11029 Leading and Trailing (求n^k前3位和后3位)
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位)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。