C.数据处理

来源:互联网 发布:陪吃陪喝陪玩的软件 编辑:程序博客网 时间:2024/06/04 23:35

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