文章

71

粉丝

97

获赞

5

访问

18.1k

头像
幂次方 为什么错误
我要提问
发布于2024年3月2日 15:43
阅读数 251

#include<iostream>
#include<cstring>
using namespace std;

int fast(int a,int b,int mod) {
    long long answer = 1;
    a=a%mod;
    while (b!=0) {
        if (b%2==1) {
            answer = answer * a;
            answer = answer % mod;
        }
        b /= 2;
        a = a * a;
        a = a % mod;
    }
    return answer;
}

int main() {
    int a, b;
    cin>>a>>b;
    int sum=fast(a,b, 233333);
    cout << sum << endl;
    return 0;
}

登录查看完整内容


登录后发布评论

3 条评论
snake
2024年3月2日 19:11

注意乘法溢出的问题,不能用int,用long long

赞(0)

DestinyCares+++ : 回复 snake: #include<iostream> #include<cstring> using namespace std; int fast(int a,int b,int mod) { long long answer = 1; while (b!=0) { if (b%2==1) { answer = answer * a; answer = answer % mod; } b /= 2; a = a * a; a = a % mod; } return answer; } int main() { long long a, b; cin>>a>>b; long long sum=fast(a,b, 233333); cout << sum << endl; return 0; } 还是错误 sos

2024年3月2日 19:39

snake : 回复 DestinyCares+++: int fast(int a,int b,int mod)这里都要改成long long

2024年3月2日 19:56