題目描述
有些數可以表示成若干個不同階乘的和。例如,9=1!+2!+3!。小明對這些數很感興趣,所以他給你一個正整數n,想讓你告訴他這個數是否可以表示成若干個不同階乘的和。
輸入格式
輸入包含多組測試數據。每組輸入爲一個非負整數n(n<=1000000),當n爲負數時,輸入結束。
輸出
對於每組輸入,如果n可以表示成若干個不同階乘的和,則輸出YES,否則輸出NO。
樣例輸入
9
-1
樣例輸出
YES
#include<stdio.h>
int main()
{
int n,i,a[10]={1,1,2,6,24,120,720,5040,40320,362880};
while(scanf("%d",&n)!=EOF && n>=0)
{
if(n==0)
printf("NO\n");
else
{
for(i=9;i>=0;i--)
if(n>=a[i])
n-=a[i];
printf(n?"NO\n":"YES\n");
}
}
return 0;
}