怎么大家都用dfs= =
贴个数学上的解法
代码是很早写的,风格再丑也不改了
注意到当n>2时,(n+1)!=(n+1)×n!>n×n!>sigma(i=1,n)i!
这表明,若a满足n!≤a<(n+1)!,n>2且a不能表为以n!为加数的和式
则a必然无法表为其他任何和式
#include<iostream>
using namespace std;
long long n;
long long a[10]={1,1};
int i;
int main()
{
for(i=2;i<10;++i)a[i]=i*a[i-1];
while(cin>>n){
if(n<0)return 0;
if(n==0){cout<<"NO\n";continue;}
for(i=9;i>2;--i)if(n>=a[i])n-=a[i];
n<5? cout<<"YES\n":cout<<"NO\n";
}
return 0;
}
大佬啊