【数学基础】快速幂

来源:互联网 发布:航空医学知乎 编辑:程序博客网 时间:2024/06/01 07:24

快速幂

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

22 3 55 6 7

sample_output

31


#include <stdio.h>#include <stdlib.h>#define MAX 100010long 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;}


0 0
原创粉丝点击