1085:階乘的和

題目描述

有些數可以表示成若干個不同階乘的和。例如,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;
}
        

           


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章