倚天照海花无数,流水高山心自知。
解法二:
#include<stdio.h>
long n,k,fac[] ={1,1,2,6,24,120,720,5040,40320,362880};
main(){
while(scanf(\"%ld\",&n)!=EOF&&n>=0){
for(k=9;k>=0&&n;k--)
if(n>=fac[k]) n -= fac[k];
printf(k<9&&!n?\"YES\n\":\"NO\n\");
}
return 0;
}
五楼的解法2的fac数组为什么前两个元素都是1呢?
输入10也应该输出yes吗?
搞不懂,麻烦哪位高手解答一下。
也许是我没理解题意?