時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:3描述
給你乙個非負數整數n,判斷n是不是一些數(這些數不允許重複使用,且為正數)的階乘之和,如9=1!+2!+3!,如果是,則輸出yes,否則輸出no;
輸入
第一行有乙個整數0
輸出如果符合條件,輸出yes,否則輸出no;
樣例輸入
2
9
10
樣例輸出
yes
no這道題很簡單,說是貪心感覺也說得過去...思路:設定乙個變數exist表示該數是否滿足條件,初值為0;設定乙個階乘函式f(x)表示x的階乘.(假設輸入的值是n)我們需要找出f(x)>n時x的值,(比如大於9的x就是4)接下來需要從i=x-1遞減到i>=1(因為x的階乘已經大於n了),令sum=f(i),每次用sum加上i-1的階乘,若兩數之和大於n跳過;若和小於等於n,把和賦值給sum,再次判定sum與n是否相等,相等賦值exist為1,跳出...最後exist等於1證明該數滿足,反之不滿足。
#includeint f(int n)
}
int main()
if(sum==n)
} if(exist==1)
printf("yes\n");
else
printf("no\n");
} return 0;
}
看完這個之後我們來個簡便的。
#include#define size 9
int main()
; scanf("%d",&t);
while(t--)
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 樣例輸入 29 1...
NYOJ 91 階乘之和
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 2 9 ...