#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y)
{
    if(y==0) return x;
    return gcd(y,x%y);
}
int main()
{
        int i,j,a,b,ansA,ansB,l;
        scanf("%d%d%d",&a,&b,&l);
        ansA=l;ansB=1;
        for(i=1;i<=l;i++)
                for(j=1;j<=l;j++)
                        if(gcd(i,j)==1&&i*b>=j*a&&i*ansB<j*ansA)
                        {
                                ansA=i;
                                ansB=j;
                        }
        printf("%d %d",ansA,ansB);
        return 0;
}

  

考虑一个分数\frac{i}{j}ji

  1. 如果\frac{i}{j}<\frac{a}{b}ji<ba那么ii应当+1+1
  2. 如果\frac{i}{j}\ge\frac{a}{b}jiba那么jj应当+1+1

初始时i=j=1i=j=1,i>ni>n或j>nj>n时停止(nn是题目中的ll)

ansans即为所有满足\frac{i}{j}\ge\frac{a}{b}jiba\frac{i}{j}ji的最小值

posted on 2020-04-16 13:44  月下诺  阅读(280)  评论(0编辑  收藏  举报

Live2D