1810. [NOIP2014]比例簡化
★☆ 輸入文件:ratio.in
輸出文件:ratio.out
簡單對比
時間限制:1 s 內存限制:256 MB
【題目描述】
在社交媒體上,經常會看到針對某一個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支持的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記爲1498:902。 不過,如果把調查結果就以這種方式呈現出來,大多數人肯定不會滿意。因爲這個比例的數值太大,難以一眼看出它們的關係。對於上面這個例子,如果把比例記爲5:3,雖然與真實結果有一定的誤差,但依然能夠較爲準確地反映調查結果,同時也顯得比較直觀。
現給出支持人數A,反對人數B,以及一個上限L,請你將A比B化簡爲A'比B',要求在A'和B'均不大於L且A'和B'互質(兩個整數的最大公約數是1)的前提下, A'/B'≥A/B且A'/B'-A/B的值儘可能小。
【輸入格式】
輸入共一行,包含三個整數A,B,L,每兩個整數之間用一個空格隔開,分別表示支持人數、反對人數以及上限。
【輸出格式】
輸出共一行,包含兩個整數A',B',中間用一個空格隔開,表示化簡後的比例。
【樣例輸入】
1498 902 10
【樣例輸出】
5 3
【提示】
對於100%的數據,1 ≤ A ≤ 1,000,000,1 ≤ B ≤ 1,000,000,1 ≤ L ≤ 100, A/B ≤ L。
#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
freopen("ratio.in","r",stdin);
freopen("ratio.out","w",stdout);
int m,n,l;
cin>>m>>n>>l;
float ans=0,ansmin=l,tmp;
ans=(float)m/n; int ansa,ansb;
int tmpb=0;
for(int i=l;i>=1;i--){
tmpb=i/l;
for(int j=tmpb;j<=l;j++){
tmp=(float)i/j;
if(tmp>=ans){
if(tmp<=ansmin){
ansa=i;ansb=j;
ansmin=tmp;
}
}
//cout<<i<<" "<<j<<endl;
}
}
cout<<ansa<<" "<<ansb<<endl;
return 0;
}