位数高了就wa,求助dalao
查看原帖
位数高了就wa,求助dalao
1112575
with_my_moon楼主2024/10/18 21:36
#include <iostream>
#include <cstdio>
#include <queue>
#include <string.h>
#include <stack>
#include <algorithm>
#include <math.h>
using namespace std;

#define ll long long 
#define up 10000000000

int n;
ll data[1000];//1e8

void mul(ll data[],int c){
	long long j=0;
	int i=0;
	while(data[i]!=0||j){
		data[i]=data[i]*c+j;
		j=data[i]/up;
		data[i]%=up;
		i++;
	} 
	return;
}

void div(ll data[],int c){
	long long j=0;
	int beg;
	for(int i=900;i>=0;i--){
		if(data[i]!=0){
			beg=i;
			break;
		}
	}
	while(beg>=0){
		j*=up;
		data[beg]+=j;
		j=data[beg]%c;
		data[beg]/=c;
		beg--;	
	} 
	return;
}


void solve(){
	data[0]=n+2;
	for(int i=n+3;i<=2*n;i++){
		mul(data,i);		
	}
	for(int i=1;i<=n;i++){
		div(data,i);
	}
	int flag=1;
	for(int i=900;i>=0;i--){
		if(data[i]!=0){
			if(flag==0){
				int weishu=up;
					while(data[i]<weishu){
						cout<<0;
						weishu/=10;
				}
				cout<<data[i];
			}
			else{
				cout<<data[i];
				flag=0;
			}
		}
	}
	return;
}

int main(){
	cin>>n;
	solve();
	return 0;	
}
2024/10/18 21:36
加载中...