C.数据处理

1200: C.数据处理

时间限制: 1 Sec  内存限制: 64 MB
提交: 92  解决: 22

题目描述

    做完大学物理实验后,WYL同学得到了很多比例形式的实验结果。比如1498:902,337:124等等。不过,老师对这些比例很不满意。因为比例的数值太大,难以一眼看出与理论值的关系。

对于上面这个例子,如果把比例记为 5:3,虽然与最初的实验结果有一定的误差,但依然能够较为准确地反映实验结果,同时也显得比较直观。现给出实验结果AB,以及一个上限 L,请你将 比 化简为 A’比 B’,要求在 A’和 B’均不大于 且 A’和 B’互质(两个整数的最大公约数是 1)的前提下,A’/B’ ≥ A/B 且 A’/B’ - A/B 的值尽可能小。

输入

输入共一行,包含三个整数 ABL,每两个整数之间用一个空格隔开。

(1 ≤ A ≤ 1000000,1 ≤ B ≤ 1000000,1 ≤ L ≤ 100,A/B ≤ L)

输出

输出共一行,包含两个整数 A’,B’,中间用一个空格隔开,表示化简后的比例。

样例输入

1498 902 10

样例输出

5 3

提示

1 ≤ A ≤ 1000000,1 ≤ B ≤ 1000000,1 ≤ L ≤ 100,A/B ≤ L。



来源

宣城校区第三届程序设计竞赛


代码实现

#include "iostream"
#include "cstring"
using namespace std;
//判断a,b是否互质
bool judge(int a,int b)
{
	int temp;
	while(b)
    {
    	temp = a%b;
        a = b;
        b = temp;
    }
    if(1 == a)
        return true;
    else
        return false;
}
int main()
{
	float A,B,L,M,o,p;
	while(cin>>A>>B>>L)
	{
		bool flag=1;
		for(int a=1;a<L;a++)
		    for(float b=1;b<L;b++)
		    {
		    	if(judge(a,b))
		    	{
		    	    float m=a/b,n=A/B;
		    	    if(m>=n)
		    	    {
		    	    	if(flag)
		    	        {
		    		        M=m-n;
		    		        flag=0;
		    		        o=a;
		    		        p=b;
		    	        }
		    	    	if(M>=m-n)
		        		{
		        			M=m-n;
		    	    		o=a;
		        			p=b;
		          		}
		        	}
				}
		    }
		cout<<o<<" "<<p<<endl;
	}
	return 0;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值