关于快速幂的疑问
  • 板块学术版
  • 楼主幽灵特工
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/12/17 16:23
  • 上次更新2023/11/5 06:01:50
查看原帖
关于快速幂的疑问
332549
幽灵特工楼主2020/12/17 16:23

快速幂的底数,指数,模声明为longlong可以得到正确答案,而声明为int则不能。经调试发现int型没有溢出。

请问各位dalao这是为什么?

(附上代码,fastPower是正确输出的函数;main里是用的int型,错误)

//ÆÓËØËã·¨
#include <bits/stdc++.h>
using namespace std;
int b,p,k;
int s=1;

long long fastPower(long long base, long long power) {
    long long result = 1;
    while (power > 0) {
        if (power % 2 == 1) {
            result = result * base % k;
        }
        power = power / 2;
        base = (base * base) % k;
    }
    return result;
}
int main(){
	cin>>b>>p>>k;
	cout<<b<<"^"<<p<<" mod "<<k<<"=";
	cout<<fastPower(b,p)<<endl<<endl;
	while(p>0){
		if(p%2==1){
			s=s*b%k;
		}
		p/=2;
		b=(b*b)%k;
	}
	cout<<s;
	return 0;
}
2020/12/17 16:23
加载中...