题意:给你 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=;
while(b)
{
if(b%)
{
ans=(ans*a)%mod;
}
b=b/;
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(,a)*;
ll ans2 = qmod(n,k,);
cout<<(ll)ans1<<"...";
printf("%03lld\n",ans2);
}
return ;
}