時間限制:3000 ms | 記憶體限制:65535 kb
難度:3
描述
給你乙個非負數整數n,判斷n是不是一些數(這些數不允許重複使用,且為正數)的階乘之和,如9=1!+2!+3!,如果是,則輸出yes,否則輸出no;
輸入
第一行有乙個整數0輸出
如果符合條件,輸出yes,否則輸出no;
樣例輸入
2
910
樣例輸出
yes
no
心得體會:
看到這道題,最開始想錯了,以為是從階乘1加到階乘n相等了就輸出yes,後來明白了題目的意思是只要有任何階乘相加等於給出的數的都可以yes,然後看了一眼這道題的取值範圍是小於100 0000;後來乾脆就直接把100 000以內的階乘列在了乙個陣列之內,以便節約程式執行時間……緊接著就是開始從最後陣列的一位開始減了,如果最後一位大於給出的m了、就continue;反之,開始m-=f[i];再跟著判斷……然後就完事兒了。
**如下:(第乙個是算階乘的……第二個是正解)
#includeusing namespace std;
//階乘函式
int fun(int n);
//首先把小於100 0000所有情況列出來
int main()
} if(m!=0) cout << "no" << endl;
} 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...