牛客小白月赛12 B华华教月月做数学B

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuewenyao/article/details/88567497

题目链接:https://ac.nowcoder.com/acm/contest/392/B?&headNav=acm

题目描述:

找到了心仪的小姐姐月月后,华华很高兴的和她聊着天。然而月月的作业很多,不能继续陪华华聊天了。华华为了尽快和月月继续聊天,就提出帮她做一部分作业。
月月的其中一项作业是:给定正整数A、B、P,求ABmodPABmodP的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。
因为月月的作业很多,所以有T组询问。

输入描述:

第一行一个正整数T表示测试数据组数。
接下来T行,每行三个正整数A、B、P,含义如上文。

输出描述:

输出T行,每行一个非负整数表示答案。


 

输入

复制

2
2 5 10
57284938291657 827493857294857 384729583748273

输出

复制

2
18924650048745

备注:

1≤T≤1031≤T≤103,1≤A,B,P≤10181≤A,B,P≤1018 

这是个快速幂加快速乘,各路大神的单吗都比较高大上,可是大神ac代码我为什么编译器上都不让我编译呢,这是什么鬼,附上大神代码:

#include <stdio.h>
typedef __int128 ll;
long long a_b_Mod_c(ll a, ll b, ll p) {
    ll s = 1;
    while (b) {
        if (b & 1)
            s = (s * a) % p;
        a = (a * a) % p;
        b >>= 1;
    }
    return (long long) s % p;
}
int main() {
    int t;
    long long a, b, p;
    scanf("%d", &t);
    while (t--) {
        scanf("%lld%lld%lld", &a, &b, &p);
        printf("%lld\n", a_b_Mod_c(a, b, p));
    }
    return 0;
}
#include <iostream>
#include <cstdio>
using namespace std;
#define LL unsigned long long
typedef __int128 ll;
ll quickpow(ll a,ll b,ll p)
{
    ll res=1;
    a%=p;
    while(b!=0)
    {
        if(b&1)
            res=(res*a)%p;
        a=(a*a)%p;
        b>>=1;
    }
    return res;
}
int main()
{
    int t;
    cin>>t;
    LL a,b,p;
    while(t--)
    {
        cin>>a>>b>>p;
        a%=p;
        cout<<(LL)quickpow(a,b,p)<<endl;
    }
    return 0;
}

在这里我也发上我的ac代码,我使用的python写的,嘿嘿嘿。

s=int(input())
while s!=0:
    s -= 1
    a,b,p=map(int,input().split())
    print(pow(a,b,p))

挺能偷懒的,哈哈哈,python主要是有个pow这个库函数,比较方便

猜你喜欢

转载自blog.csdn.net/yuewenyao/article/details/88567497