[NOIP2014]比例簡化 模擬

 

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;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章