小明的求助
时间限制:2000 ms | 内存限制:65535 KB
难度:2
- 描述
- 小明对数学很有兴趣,今天老师出了道作业题,让他求整数N的后M位,他瞬间感觉老师在作弄他,因为这是so easy! 当他看到第二道题目的时候,他就确定老师在捉弄他了,求出N^P的后M位,因为他不会了。你能帮他吗?
- 输入
- 第一行包含一个整数T(T <= 1000),代表测试数据组数。 接下来的T行每行含三个整数,N,P,M(1 <= N <= 10^10,1 <= P <= 10^15,1 <= M <= 9)。
- 输出
- 输出格式“Case #i: ans”(不含引号),i表示第i组测试数据,ans为所求结果。
- 样例输入
-
2 2 4 1 3 7 2
- 样例输出
-
Case #1: 6 Case #2: 87
- 来源
- NYIST第一届校赛(专业组)
- 上传者
- ACM_李如兵
1 #include <stdio.h> 2 #include <math.h> 3 int f(int a,long long int n,int m) 4 { 5 long long int t; 6 if(n==0) 7 return 1; 8 if(n==1) 9 return a%m; 10 t=f(a,n/2,m)%m; 11 t=(t*t)%m; 12 if(n&1) 13 t=t*a%m; 14 return t; 15 } 16 int main() 17 { 18 int k,N; 19 scanf("%d",&N); 20 for(k=1;k<=N;k++) 21 { 22 int m,j; 23 long int n,M=1; 24 long long int p,i,sum=1; 25 scanf("%ld %lld %d",&n,&p,&m); 26 for(j=0;j<m;j++) 27 M*=10; 28 printf("Case #%d: ",k); 29 printf("%d ",f(n,p,M)); 30 } 31 return 0; 32 }