AcWing 458 比例簡化

2021-10-19 08:58:33 字數 1131 閱讀 1936

在社交**上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。

例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498:902。

不過,如果把調查結果就以這種方式呈現出來,大多數人肯定不會滿意。

因為這個比例的數值太大,難以一眼看出它們的關係。

對於上面這個例子,如果把比例記為5:3,雖然與真實結果有一定的誤差,但依然能夠較為準確地反映調查結果,同時也顯得比較直觀。

現給出支援人數a,反對人數b,以及乙個上限l,請你將a:b化簡為a′:b′,要求在a′和b′均不大於l且a′和b′互質(兩個整數的最大公約數是1)的前提下,a′b′≥ab且a′b′−ab的值盡可能小。

輸入共一行,包含三個整數a,b,l,每兩個整數之間用乙個空格隔開,分別表示支援人數、反對人數以及上限。

輸出共一行,包含兩個整數a′,b′,中間用乙個空格隔開,表示化簡後的比例。

1≤a,b≤106,

1≤l≤100,a/b≤l

1498 902 10

5 3

思路:

1、l在100以內,因此可以列舉a『,b』的所有組合然後判斷:

a』,b』是否互質

a』/b』 是否大於等於a/b,並且最小

2、條件二就是不斷取差值,然後保留最小值即可。

沒有互質的判斷是因為,當我們列舉到(6,4)的時候,那麼之前肯定列舉過(3,2)的情況了,又因為6 - 4 > 3 - 2所以保留(3,2)的情況。

a′,b′a′,b′ 總共有 l

2l^2

l2種組合,因此總時間複雜度是o(l

2log

l)

o(l^2logl)

o(l2lo

gl)。

原題鏈結

#include

#include

using

namespace std;

int a, b, l;

intmain()

}}cout << x <<

' '<< y << endl;

}

AcWing 458 比例簡化

在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結果就以這種方式呈現出來,大多數人肯定不會滿意。因為這個比例的數值太大,難以一眼看出它們的關係。對於上面這個例...

AcWing 458 比例簡化(列舉 二分)

題目鏈結 在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結果就以這種方式呈現出來,大多數人肯定不會滿意。因為這個比例的數值太大,難以一眼看出它們的關係。對於...

NOIP2014 比例簡化 模擬

輸入檔案 ratio.in輸出檔案 ratio.out簡單對比 時間限制 1 s 記憶體限制 256 mb 在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結...