链接
题意:给定两个数n,k 求n^k的前三位和最后三位
解法:
后三位:快速幂求即可
前三位:设方程
, P由 整数部分和小数部分组成 P= X+ Y ,则
对前三位的数没影响,重点是
的值,再*100即是前三位的数
PS:注意后三位输出是使用%03d补全前缀0!
#include<bits/stdc++.h> #define ll long long using namespace std; int T; int n,k; int main() { scanf("%d",&T); int test=1; while(T--) { scanf("%d%d",&n,&k); int kk=k; double res1; double p=(double)k*log10(n*1.0); p-=(int)p; res1=(double)pow(10.0,p); res1*=100; int res2=1; while(k) { n%=1000; if(k&1) res2*=n; res2%=1000; n*=n; k/=2; } printf("Case %d: %03d %03d\n",test++,(int)res1,res2); } }
Leading and Trailing
最新推荐文章于 2024-03-10 15:08:07 发布