P1009 阶乘之和求调
  • 板块学术版
  • 楼主super_zzr
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/3/25 11:10
  • 上次更新2023/10/23 20:36:30
查看原帖
P1009 阶乘之和求调
966353
super_zzr楼主2023/3/25 11:10

P1009

代码
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define endl "\n"
using namespace std;
int a[10000005],c[10000005],a1=1,c1=1;
void jia(){
	int l=max(a1,c1);
	for(int i=1;i<=l;i++){
		if(i==l){
			if(a[i]+c[i]>=10){
				c1=l+1;
			}
			else{
				c1=l;
			}
		}
		c[i]+=a[i];
		c[i+1]=c[i]/10;
		c[i]%=10;
	}
}
void cheng(int k){
	int p=0;
	int f=0,l=a1;
	for(int i=1;i<=l;i++){
		if(i==l){
			if(a[i]*k+f>=100){
				l+=2;
				p=1;
			}
			else if(a[i]*k+f>=10){
				a1=l+1;
			}
			else{
				a1=l;
			}
		}
		if(p==1){
			f=a[i]/10;
			a[i]=a[i]%10;
			a[i+1]+=f;
		}
		else{
			f=(a[i]*k)/10;
			a[i]=(a[i]*k)%10;
			a[i+1]+=f;
		}
	}
}
int main(){
	long long n,cnt=0;
	cin>>n;
	a[1]=1;
	c[1]=1;
	for(long long i=2;i<=n;i++){
		cheng(i);
		jia();
	}
	for(int i=c1;i>=1;i--){
		cout<<c[i];
	}
	return 0;
}

2023/3/25 11:10
加载中...