LightOJ1282

题目大意:

  给出 n 和 k,请你求出 n^k 次方的前三位和后三位。

解题思路:

  后三位用快速幂,不加赘述。

  求前三位的方法:

AC代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 
 5 using namespace std;
 6 typedef long long ll;
 7 
 8 int Fase_Power(ll a,int m){
 9     int ret=1;
10     a%=1000;
11     while(m){
12         if(m&1) ret=ret*a%1000;
13         m>>=1;
14         a=a*a%1000;
15     }
16     return ret;
17 }
18 int main()
19 {
20     ll n;
21     int T,k;
22     scanf("%d",&T);
23     for(int t=1;t<=T;t++){
24         scanf("%lld%d",&n,&k);
25         printf("Case %d:",t);
26         double x=fmod(fmod(log10(n),1.0)*(double)k,1.0);//用fmod()取浮点数的小数部分。
27         double ans=pow(10.0,x);
28         ans*=100.0;
29         printf(" %d %03d\n",(int)ans,Fase_Power(n,k));  //注意后三位有前导0的情况。
30     }
31     return 0;
32 }

 

posted @ 2017-10-21 21:10  Blogggggg  阅读(134)  评论(0编辑  收藏  举报