(紀中)2216 greatest DP 高精

2021-10-03 14:27:58 字數 2710 閱讀 4063

(file io): input:greatest.in output:greatest.out

時間限制: 1000 ms 空間限制: 131072 kb 具體限制

goto problemset

題目描述

已知若干個正整數的和為s

ss,求這若干個正整數的最小公倍數的最大值。

輸入

第一行乙個整數t

tt,表示測試資料的組數。

接下來t

tt行,每行包括乙個正整數s

ss,表示若干個正整數的和為sss。

輸出

輸出t

tt行,每行包括乙個整數,表示和為s

ss的若干個正整數的最小公倍數的最大值。

樣例輸入24

7樣例輸出412

資料範圍限制

樣例中第一組資料s=4

s=4s=

4,它能分解成s=1

+1+1

+1,s

=1+1

+2,s

=1+3

,s=2

+2,s

=4

s=1+1+1+1,s=1+1+2,s=1+3,s=2+2,s=4

s=1+1+

1+1,

s=1+

1+2,

s=1+

3,s=

2+2,

s=4,很明顯s=4

s=4s=

4時最小公倍數為4

44,是所有情況中最小公倍數最大的;第二組資料s=7

s=7s=

7,它能分解成s=3

+4

s=3+4

s=3+4,3

33和4

44的最小公倍數是12

1212

,也是所有情況中最小公倍數最大的。

提示

40

4040

%的資料:s

≤100

s≤100

s≤100;

80

8080

%的資料:s

≤330

s≤330

s≤33

0,結果不會超過lon

glon

glong long

longlo

ng型別;100

10010

0%的資料:2≤s

≤500,t

≤10

2≤s≤500,t≤10

2≤s≤50

0,t≤

10,結果不會超過25

2525

位整數。

解題思路

心路歷程:

開始看題

嗯……壓根想不出任何方法。。。

再留意資料範圍,我 (嗶——),滿分還要高精度?

(棄療中………………)。。

最後膜拜巨老lzh

lzhlz

h。。。21:45

21:45

21:4

5分竟然過了。。

好吧,回歸正題。。

首先我們明白,兩個數的乘積等於兩個數的最小公倍數乘最大公約數,

其次,我們還能想到,只要兩個數所擁有的質因數不同,那麼最大公約數也就很小,反之最大公約數就很大!!

(證明:x1+y1s

ss是揹包的總容量,每個質因數和它的次冪都是一件物品,這些物品重量是它本身,價值是它本身乘原來的價值,

我們再根據上面所說的,兩個數所擁有的質因數要不一樣,所以,乙個質數的次冪只能取乙個。。

動態轉移方程:f[i

]=ma

xf[i

−jk]

∗jk(

jk

<=i

)f[i]=max(j ^ k<=i)

f[i]=m

axf[

i−jk

]∗jk

(jk<=i

)

(下面附上我那很長的**)

**

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int t,n,zs[

600]

,m,a[

600][50

],s,p,c[50]

;bool flag;

void

ch(int x,int y)

}bool hh

(int x)

}int main()

}if(flag==1)

}scanf

("%d"

,&n)

;for

(int i=

1; i<=n; i++)}

}}p=1;

while

(a[m]

[p]==

0)p++

;while

(p<=49)

cout<}return0;

}

2019紀中培訓

2019.01.22 noip普及組 模擬賽c組 在紀中的第一套題 為什麼是xp?我好水四道題三道dp 2019.01.23 noip普及組 模擬賽c組 換到了科學樓,有windows 7真好 有點強大 比賽結束之後,沒有乙個人把第三道題a了 聽到巨佬講規律,心裡懵逼的一批 晚上還有北大老師講課 2...

2016 6 11紀中模擬賽

題目 t1 赤裸裸的水題,直接高精度就行了。t2 這題本應放到3或4題上,可老師應該是故意放到這裡的吧 考試時我先想到的是貪心,隨後我又證明了我那種貪心是不可取的,可是我想都沒想下去,就認為這道題是dfs 記憶化了。所以,我就開始打記憶化了,可是題目的條件是100000 100000的,但如果開這麼...

刪除 紀中1381 暴力

alice上化學課時又分心了,他首先畫了乙個3行n列的 然後把數字1到n填入 的第一行,保證每個數隻出現一次,另外兩行他也填入數字1到n,但不限制每個數字的出現次數。alice現在想刪除若干列使得每一行排完序後完全一樣,程式設計計算最少需要刪除多少列。第一行包含乙個整數n 1 n 100000 表示...