在社交**上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。
例如,對某一觀點表示支援的有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
思路:a′,b′a′,b′ 總共有 l1、l在100以內,因此可以列舉a『,b』的所有組合然後判斷:
a』,b』是否互質
a』/b』 是否大於等於a/b,並且最小
2、條件二就是不斷取差值,然後保留最小值即可。
沒有互質的判斷是因為,當我們列舉到(6,4)的時候,那麼之前肯定列舉過(3,2)的情況了,又因為6 - 4 > 3 - 2所以保留(3,2)的情況。
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。不過,如果把調查結...