您的位置:首页 > 其它

【数学基础】快速幂

2014-01-18 03:28 316 查看

快速幂

Time Limit 1000ms

Memory Limit 65536K

description

给定3个正整数a,b,m,求a^b % m的值。

input

输入数据第一行一个T(T<=100),表示测试数据的组数,接下来T行,每行3个数a,b,m,数据范围都在10^9以内。

output

输出结果。

sample_input

2
2 3 5
5 6 7

sample_output

3
1

#include <stdio.h>
#include <stdlib.h>

#define MAX 100010

long long f(long long a,long long b,long long c);

int main()
{
long long n;
while(scanf("%lld",&n)!=EOF)
{
long long b[MAX];
long long i,num1,num2,num3;
for(i=0;i<n;i++)
{
scanf("%lld%lld%lld",&num1,&num2,&num3);
b[i]=f(num1,num2,num3);
}
for(i=0;i<n;i++)
printf("%lld\n",b[i]);
}
return 0;
}

long long f(long long a,long long b,long long c)
{
long long m=1;
a=a%c;
while(b)
{
if(b%2==1)
{
m=m*a%c;
b--;
}
b>>=1;
a=a*a%c;
}
return m;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  2014 寒假 水题