階乘之和 貪心

2021-08-22 07:24:04 字數 1244 閱讀 5588

階乘之和

description

對於整數ppp,給出以下定義

p=x1!+x2!+x3!+...+xq!(xiinput

第一行輸入乙個整數t,代表t組測試資料。(1≤t≤10000)(1\leq t \leq 10000)(1≤t≤10000)

接下來t行,每行包含兩個整數x,y。(1≤x,y≤1018)(1\leq x,y \leq 10^)(1≤x,y≤1018)

output

對於每組x,y輸出包含兩部分:

①如果二者都滿足以上定義,輸出「seyes」;如果只有其一滿足以上定義,輸出「yneos」;如果二者都不滿足以上定義,則輸出「ono」。

②當x,y都滿足以上定義且k1=k2k_=k_k1​=k2​時,輸出二者的定義形式。否者輸出「dwvwb」。

sample input 1

47 7

1 24 2

4 4sample output 1

case 1:seyes

7=1!+3!

7=1!+3!

case 2:seyes

1=1!

2=2!

case 3:yneos

dwvwb

case 4:ono

dwvwb

x,y最大1e18,陣列開到20!即可,組成p的階乘不重複使用,劃重點。將乙個數按照階乘陣列逆序減即可,陣列用完恰好減到0就可以滿足條件。

code:

#include#includeusing namespace std;

typedef long long ll;

ll a[100];

ll f(ll n)

int p(ll x)

} }return 0;

}ll pp[100];

ll q=0;

ll cnt(ll x)

} }return num;

}int main()

ll x,y;

ll t;

cin>>t;

for(int i=1;i<=t;i++){

cin>>x>>y;

if(p(x) && p(y)){

if(cnt(x)==cnt(y)){

printf("case %d:seyes\n",i);

int s=cnt(x);

cout<=0;i--)

cout<<"+"<=0;i--)

cout<<"+"

階乘之和 DFS or 貪心

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 2910...

acm 階乘之和

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給你乙個非負數整數 n,判斷 n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如 9 1!2 3 如果是,則輸出 yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 ...

nyoj 階乘之和

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