求助大佬,为什么这个不对?
查看原帖
求助大佬,为什么这个不对?
141577
yhc12345楼主2020/8/7 18:14
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#define INF 0x3f3f3f3f

using namespace std;
typedef long long ll;
int p;
const int N=1010;
struct bign {
	int d,num[N];
	bign() {
		memset(num,0,sizeof(num));
	}
}b,ans;
bign operator *(const bign &x,const bign &y) {
	bign res;
	for(int i=1;i<=x.d;i++) {
		for(int j=1;j<=y.d;j++) {
			res.num[i+j-1]=x.num[i]*y.num[j];
		}
	}
	for(int i=1;i<=res.d;i++) {
		if(res.num[i]>9) {
			res.num[i+1]=res.num[i]/10;
			res.num[i]%=10;
		}
	}
	res.d=x.d+y.d-1;
	if(res.num[res.d+1]>0) {
		res.d++;
	}
	return res;
}
int main() {
	ios::sync_with_stdio(false);
	scanf("%d",&p);
	printf("%d\n",(int)(p*log10(2)+1));
//	b.num[1]=5;
//	b.d=1;
//	ans.num[1]=6;
//	ans.d=1;
	//bign x=b*ans;
	//printf("%d %d %d",x.d,x.num[1],x.num[2]);
	b.num[1]=2;
	b.d=1;
	ans.num[1]=1;
	ans.d=1;
	while(p>0) {
		if(p&1) {
			ans=ans*b;
			p--;
		}
		b=b*b;
		p>>=1;
	}
	for(int i=500;i>=1;i--) {
		if(i%50==0&&i<500) {
			printf("\n");
		}
		if(ans.d<i) {
			printf("0");
		}
		else {
			printf("%d",ans.num[i]);
		}
	}
	return 0;
}

2020/8/7 18:14
加载中...