#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:
- 如果\frac{i}{j}<\frac{a}{b}ji<ba那么ii应当+1+1
- 如果\frac{i}{j}\ge\frac{a}{b}ji≥ba那么jj应当+1+1
初始时i=j=1i=j=1,i>ni>n或j>nj>n时停止(nn是题目中的ll)
ansans即为所有满足\frac{i}{j}\ge\frac{a}{b}ji≥ba的\frac{i}{j}ji的最小值