您的位置:首页 > 其它

nyoj--102--次方求模(快速幂)

2016-01-29 11:40 148 查看


次方求模

时间限制:1000 ms  |  内存限制:65535 KB
难度:3

描述

求a的b次方对c取余的值

 

输入第一行输入一个整数n表示测试数据的组数(n<100)

每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000)

输出输出a的b次方对c取余之后的结果
样例输入
3
2 3 5
3 100 10
11 12345 12345


样例输出
3
1
10481


来源[张云聪]原创
上传者
张云聪

我胡汉三又回来了

#include<stdio.h>
#include<string.h>
#include<math.h>
long long mod(int a,int b,int c)
{
long long t=1;
if(b==0)
return 1;//b==0的时候,a的0次方是1,取余之后肯定是1

if(b==1)
return a%c;//a的1次方直接对c取余

t=mod(a,b>>1,c);//b的一半
t=t*t%c;
if(b&1)//b是奇数的话,t*t得到的是a的b-1次方
t=t*a%c;
return t;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int s=mod(a,b,c);
printf("%d\n",s);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: