求助快速幂不知哪里错??
查看原帖
求助快速幂不知哪里错??
1237323
zhutongxuan楼主2024/1/22 18:29
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int p,base[1000],ans[2000],count;

void gjc(int a[],int b[],int c[]){
	int a1[1000],a2[1000];
	for(int i = 1;i <= 500;i++){
		a1[i] = a[i];
		a2[i] = b[i];
	}
	for(int i = 1;i <= 2000;i++){
		c[i] = 0;
	}
	for(int i = 1;i <= 500;i++){
		for(int j = 1;j <= 500;j++){
			c[i + j - 1] += a1[i] * a2[i];
			c[i + j] += c[i + j - 1] / 10;
			c[i + j - 1] %= 10;
		}
	}
}

int main(){
	cin>>p;
	double h = log10(2);
	cout<<(int)(h * p + 1)<<endl;
	ans[1] = 1;
	base[1] = 2;
	while(p != 0){
		if(p & 1 != 0){
			gjc(ans,base,ans);
		}
		gjc(base,base,base);
		p >>= 1;
	}
	ans[1]--;
	for(int i = 500;i >= 1;i--){
		cout<<ans[i];
		count++;
		if(count == 50){
			cout<<endl;
			count = 0;
		}
	}
    return 0;
}
2024/1/22 18:29
加载中...