0分求调
  • 板块题目总版
  • 楼主lly66666
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/16 12:56
  • 上次更新2024/10/16 16:41:40
查看原帖
0分求调
1377891
lly66666楼主2024/10/16 12:56
#include <bits/stdc++.h>
using namespace std;
int a[15];
int n;
long long f[1000005];
int main(){
	a[1] = 1;
	for(int i = 2;i <= 10;i++){
		a[i] = a[i-1]*i;
	}
	cin >> n;
	while(n>=0){
		memset(f,-1,sizeof(f));
		bool flag = false;
        f[0] = 0;
		for(int i = 1;i <= 10;i++){
			for(int j = n;j >= a[i];j--){
				f[j] = max(f[j],f[j-a[i]]+1);
			}
		}
		if(f[n] != -1)cout << "YES" << endl;
		else cout << "NO" << endl;
		cin >> n;
	}
	return 0;
}

T311433 阶乘之和 题目描述 给定一个非负整数 n,请你判断 n 是否可以由一些非负整数的阶乘相加得到。

输入格式 有若干组数据。每行一个整数 n,保证 n<1000000。 以负数结束输入。

输出格式 对于每组数据输出一行,若可以则输出‘YES’,否则输出‘NO’。

2024/10/16 12:56
加载中...