ac数论之n次方取模

次方求模

时间限制: 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<math.h>
#include<algorithm>
using namespace std;
int pow(long long int a,long long int n,long long int b)
{//快速幂求模
    a=a%b;//初始化化底数取模
    int result=1;
    while(n>0)
    {
        if(n%2==1)//如果是n
            result=result*a%b;//多乘一次取模
        a=a*a%b;//相乘取模
        n=n/2;//左移一位
    }
    return result;
}
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        long long int a,n,b;
        scanf("%lld%lld%lld",&a,&n,&b);//读入三个数
        printf("%d\n",pow(a,n,b));
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/memeda1141/article/details/79950749