階乘之和 南陽OJ

2021-08-04 09:31:35 字數 919 閱讀 5778

階乘之和

時間限制:3000 ms | 記憶體限制:65535 kb

難度:3

描述

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

第一行有乙個整數m(1,100),表示有m組測試資料;

每組測試資料有乙個正整數n<1000000;

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

樣例輸入

2

910

樣例輸出

yes

no

題解:先算出階乘小於1000000的幾個數,把它們的階乘放入陣列,然後和n比較,取離n最近且小於n的階乘ki,然後n=n-ki,重複這個過程,直至n=0或者n小於0

#include

#include

#include

#include

#include

using

namespace

std;

int main()

,j,t;

for(i=1,c=0;i<=10;i++)

k[c]=s;//把這些數的階乘放入陣列

if(k[c]>1000000)//大於1000000時跳出

break;

c++;

}scanf("%d",&t);

while(t--)

}if(n==0)

printf("yes\n");

else

printf("no\n");

}return

0;}

ps:有幫助的話頂一下哦

南陽理工OJ91 階乘之和

include int helper 100 void getmultiply 根據備忘錄求解遞迴表 int getresult int n 獲取結果 int getindex int n 取得離輸入的值最近的且小於的數的位置 int main else return 0 void getmulti...

子串和(南陽理工oj 題目44)

時間限制 5000 ms 記憶體限制 65535 kb 難度 3 描述 給定一整型數列,找出連續非空子串,使得該子串行的和最大,其中,1 x y n。輸入 第一行是乙個整數n n 10 表示測試資料的組數 每組測試資料的第一行是乙個整數n表示序列中共有n個整數,隨後的一行裡有n個整數i 100 輸出...

思維 南陽理工91 階乘之和

描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 2 910樣例輸出 yes no 1 include2 intmain 3 ...