POJ1775
差一點用DP做了 注意0的階乘是1 總覺得思維不夠開闊 這題問一個非負數是否是不同的數的階乘組成的 可以循環一遍
就出結果的 從大到小循環。。
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
int a[10],n;
a[0]=1;
for(int i=1; i<=9; i++)
a[i]=a[i-1]*i;
while(~scanf("%d",&n)&&n>=0)
{
if(n==0)
{
cout<<"NO"<<endl;
continue;
}
for(int i=9; i>=0; i--)
if(n>=a[i])
n-=a[i];
if(n==0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
最後更新:2017-04-04 07:03:32