NYOJ 91 階乘之和

2021-06-28 02:41:42 字數 1001 閱讀 3765

時間限制:

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 ...