2015湖南省ACM大賽F題階乘除法

2021-07-16 10:19:57 字數 1113 閱讀 1904

description

輸入兩個正整數 

n, m

,輸出 

n!/m!

,其中階乘定義為 

n!= 1*2*3*...*n (n>=1)

。 比如,若 

n=6, m=3

,則 n!/m!=6!/3!=720/6=120。

是不是很簡單?現在讓我們把問題反過來:輸入 

k=n!/m!

,找到這樣的整數二元組

(n,m) (n>m>=1)。

如果答案不唯一,

n 應該盡量小。比如,若 

k=120

,輸出應該是 

n=5, 

m=1,而不是 

n=6, 

m=3,因為 

5!/1!=6!/3!=120

,而 5<6。

input

輸入包含不超過 100 組資料。每組資料報含乙個整數 k (1<=k<=10^9)。

output

對於每組資料,輸出兩個正整數 n 和 m。無解輸出"impossible",多解時應讓 n 盡量小。

sample input

120

1210

sample output

case 1: 5 1

case 2: impossible

case 3: 7 4

題解: 只有1的時候,會出現impossible;

當輸入的數是奇數時,直接輸出k k-1,因為,任意個連起來的數相乘都是偶數;

如果是偶數:則利用m*m<=k;來判斷m的大小;

#include#include#include#include#include#include#define ll __int64

using namespace std;

int main()

if(k%2==1)

for(m=1;m*m<=k;m++)

if(sum>k)

break;

}if(f==1)

break;}}

return 0;

}

湖南省2017省賽A題

題目大意,給你n個數,要求你給出任意乙個排列,要求乙個數與左右的數的差值的絕對值大小大於d。直接遞推,設第乙個數為a,則第二個數顯然最大為n,那麼可以推出a n d 1,第三個數為a 1,第四個數為a d。以此可遞推出第i個數大小為,分奇偶性,i為奇數時,其為a i 1 2,偶數時,a d i 4 ...

湖南省2010程式設計大賽第一題

超級水題。不解釋!題目 題目a 汽水瓶有這樣一道智力題 某商店規定 三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?答案是5瓶,方法如下 先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一...

12屆湖南省賽 F 地鐵

problem f 地鐵 time limit 5 sec memory limit 128 mb submit 84 solved 8 submit status web board description bobo 居住在大城市 icpccamp。icpccamp 有 n 個地鐵站,用 1,2,...