LightOJ

来源:互联网 发布:数字抽奖软件在线 编辑:程序博客网 时间:2024/06/17 14:13
#include<cstdio>#include<cmath>using namespace std;typedef long long LL;/*求解n^k的前三位数与末三位数*/const LL INF=1e9;//快速幂运算LL mod_pow(LL x,LL n,LL mod){    LL res=1;    while(n>0)    {        if(n&1) res=res*x%mod;        x=x*x%mod;        n>>=1;    }    return res;}int main(){    int T,kase=1;    LL n,k;    scanf("%d",&T);    while(T--)    {        scanf("%lld%lld",&n,&k);        double f=k*log10(n*1.0);//对n^k取对数        LL t=(LL)f;//取结果的整数部分,整数部分为幂,对结果不产生贡献        LL x=(LL)(f*INF)-t*INF;//取小数部分,并扩大INF倍        f=1.0*x/INF;//转换回小数        LL p=(LL)(pow(10,f)*100);//前三位数        LL q=mod_pow(n,k,1000);//后三位数        printf("Case %d: %lld %03lld\n",kase++,p,q);    }    return 0;}
原创粉丝点击