NYOJ 91 階乘之和

2021-07-03 19:18:29 字數 762 閱讀 1325

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:3

描述

給你乙個非負數整數n,判斷n是不是一些數(這些數不允許重複使用,且為正數)的階乘之和,如9=1!+2!+3!,如果是,則輸出yes,否則輸出no;

輸入

第一行有乙個整數0

輸出如果符合條件,輸出yes,否則輸出no;

樣例輸入

2

9

10

樣例輸出

yes

no

上傳者李劍鋒

思路:此題看起來很難,懂了又很簡單

因為每組測試資料是乙個正整數n<1000000,所以這個數一定在9的階乘數362880以內(包含),再大就超過1000000了。

並且他的 階乘和分解數(比如對 m= 7 來說: 1!+2!+3! )中最大的那個一定是小於他本身的最大數的階乘(即3!=6)

再將 m= 7 -3!=1 ,再比較下乙個數m < 2!,再比較下乙個數 m< =1!   ,然後m= 1 -1!=0,當m==0時 比較完畢,輸出yes ,若m!=0,輸出no.

#includeint main();

int n,m,i;

scanf("%d",&n);

while(n--)

return 0;

}

NYOJ 91 階乘之和

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 2910...

NYOJ 91 階乘之和

時間限制 3000 ms 記憶體限制 65535 kb 難度 3描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 2 9 1...

nyoj 91 階乘之和

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 29 1...