记录编号 84831 评测结果 AAAAAAAAAA
题目名称 [金陵中学2007] 最优分解方案 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2013-12-20 20:59:26 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<iomanip>
using namespace std;
const int SIZEL=201;
class HPINT{
public:
	int len;
	int s[SIZEL];
	void clear(void){
		len=1;
		memset(s,0,sizeof(s));
	}
	void assign_one(void){
		clear();
		len=s[0]=1;
	}
	void operator *= (int);
	void output(void){
		for(int i=len-1;i>=0;i--) printf("%d",s[i]);
		printf("\n");
	}
};
void HPINT::operator *=(int b){//a*b
	int i;
	for(i=0;i<len;i++) s[i]*=b;
	for(i=0;i<len||s[i];i++) s[i+1]+=s[i]/10,s[i]%=10;
	if(i>len) len=i;
	while(len>1&&!s[len-1]) len--;
}
vector<int> dc;
void work(void){
	int n;
	scanf("%d",&n);
	HPINT ans;ans.assign_one();
	int tot=1,i;
	while(true){
		if(n>tot){
			tot++;
			n-=tot;
			dc.push_back(tot);
		}
		else{
			for(i=dc.size()-1;i>=0&&n;i--){
				dc[i]++;
				n--;
			}
			for(i=dc.size()-1;i>=0&&n;i--){
				dc[i]++;
				n--;
			}
			break;
		}
	}
	for(i=0;i<dc.size();i++) ans*=dc[i];
	ans.output();
}
int main(){
	freopen("best.in","r",stdin);
	freopen("best.out","w",stdout);
	work();
	return 0;
}