#3#4错误
查看原帖
#3#4错误
378003
封禁用户楼主2021/6/20 13:55

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int sum[100],mul[100],t[100];
void i2BIG(int x,int *y){
	int l=0;
	while(x>0){
		l++;
		y[l]=x%10;
		x/=10;
	}
}
void mulBIG(int x,int *y,int *z){
	z[0]=y[0];
	for(int i=1;i<=z[0];i++) z[i]=x*y[i];
	for(int i=1;i<=z[0];i++){
		z[i+1]+=z[i]/10;
		z[i]%=10;
	}
	while(z[z[0]+1]>0){
		z[z[0]+1]+=z[0]/10;
		z[0]%=10;
		z[0]++;
	}
}
void addBIG(int *x,int *y,int *z){
	z[0]=max(x[0],y[0]);
	for(int i=1;i<=z[0];i++){
		z[i]=x[i]+y[i];
	}
	for(int i=1;i<=z[0];i++){
		z[i+1]+=z[i]/10;
		z[i]%=10;
	}
	while(z[z[0]+1]>0) z[0]++; 
}
void printBIG(int *x){
	for(int i=x[0];i>=1;i--){
		printf("%d",x[i]);
	}
}
void f(int n){
	memset(mul,0,sizeof(mul));
	i2BIG(1,mul);
	for(int i=1;i<=n;i++){
		mulBIG(i,mul,mul);
	}
	addBIG(sum,mul,sum);
}
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		f(i);
	}
	printBIG(sum);
	return 0;
}

第三测试点的数据:
输入:22
标准输出:1177652997443428940313
我的输出:791354597913
计算器算的:1124000727777607680000

2021/6/20 13:55
加载中...