高精求救!!!
  • 板块学术版
  • 楼主DevilsFlame
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/5 12:19
  • 上次更新2023/12/5 16:42:10
查看原帖
高精求救!!!
1050431
DevilsFlame楼主2023/12/5 12:19

估计也没人会来

#include<bits/stdc++.h>
using namespace std;
int s[1001][10001];
int ss[2];
void gj(int r){
	int i;
	for(i=0;i<=max(ss[1000],ss[r]);i++){
		s[1000][i]+=s[r][i];
		s[1000][i+1]+=s[r][i]%10;
		s[r][i]=0;
	}
	ss[1000]=max(ss[1000],ss[r]);
	if(s[1000][ss[1000]+1]!=0)
		ss[1000]++;
	ss[r]=0;
	return;
}
void cf(int a,int x){
	int i;
	for(i=0;i<=ss[x	];i++){
		s[x][i]*=a;
		s[x][i+1]+=s[x][i]%10;
	}
	if(s[x][ss[x]+1]!=0)
		ss[x]++;
}
int dfs(int x,int r){
	if(x==0){
		ss[r]=0;
		s[r][0]=1;
		return 0;
	}
	if(x>=2){
		dfs(x-2,r+1);
		cf(3,r+1);
		gj(r+1);
	}
	for(int i=4;i<=x;i+=2){
		dfs(x-i,r+1);
		cf(3,r+1);
		gj(r+1);
	}
	return 0;
}
int main(){
	int n;
	cin>>n;
	if(n==0){
		cout<<0<<endl;
		return 0;
	}
	dfs(2*n,0);
	gj(0);
	for(int i=0;i<=ss[1000];i++)
		cout<<s[1000][i];
	cout<<endl;
	return 0;
}

666666666666666666666666666666

2023/12/5 12:19
加载中...