水题
末位取模快速幂
首位取对数瞎搞
题目链接
http://lightoj.com/volume_showproblem.php?problem=1282
#include <stdio.h>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL mod=1000;
LL fmod(LL a,LL b){
LL ans=1;
if(a==0)return 0;
while(b){
if(b&1){
ans*=a;
ans%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return ans;
}
int main(void)
{
int t,cas=0;
scanf("%d",&t);
while(t--){
LL n,p;
scanf("%lld%lld",&n,&p);
printf("Case %d: ",++cas);
double ans=p*log10((double)n);
ans=ans-floor(ans);
ans=pow(10,ans);
while(ans<100){
ans*=10;
}
printf("%d ",(int)ans);
LL ans1=fmod(n%1000,p);
printf("%03d\n",ans1);
}
return 0;
}