xjoi2级18段 a^b&c WA90 求解!!!

#include<bits/stdc++.h>
using namespace std;
long long x,y,z;
long long f(long long y){
    if(y==0){
        return 1;
    }
    else{
        if(y%2==1){
            return f(y/2)*f(y/2)%z*x%z;
        }
        else{
            return f(y/2)*f(y/2)%z;
        }
    }
}
int main(){
    cin>>x>>y>>z;
    long long ans=f(y);
    cout<<ans;
}
2 个赞

a^b%c

提交(Submit)

中文 切换语言(Change Language)

时间:0.2s 空间:32M

题目描述:

求ab%c

输入格式:

输入三个整数a,b,c

输出格式:

输出一个整数

样例输入:

2 10000 12345

样例输出:

10786

约定:

0<=a,b<=10^9,1<=c<=10^9

2 个赞

@娄辰墨 用int_128

1 个赞

不用int_128也可以:

long long mi(long long x){
    if(x==0)
        return 1;
    long long ss=mi(x/2);
    if(x%2==1)
        return ss%m*ss%m*n%m;
    return ss%m*ss%m;
}
1 个赞

还是wa90

3 个赞

你的WA90分原因在于:漏了c=1的情况
只要把return 1;改成return 1%z;就能通过这道题。

我早就改好了