(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 表示...