階乘之和
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<<"+"/ac
階乘之和 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...