階乘之和
時間限制: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 ...