
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
ll a,b,l;
cin>>a>>b>>l;
int x1,x2;
ll mi=101;
ll mj=1;
ll p1;
ll p2;
for(ll i=1; i<=l; i++)
{
for(ll j=1; j<=l; j++)
{
if(gcd(i,j)!=1)
continue;
x1=i*b-j*a;
if(x1<0)
continue;
x2=j*b;
ll k=gcd(x1,x2);
x1=x1/k;
x2=x2/k;
if(x1*mj-x2*mi<0)
{
mi=x1;
mj=x2;
p1=i;
p2=j;
}
}
}
cout<<p1<<" "<<p2<<endl;
return 0;
}
本文探讨了一个涉及最大公约数(GCD)的数学问题,通过双重循环和条件判断,寻找满足特定条件的最小解。代码使用C++编写,展示了如何在给定范围内找到两个变量的最优解,同时考虑了变量之间的最大公约数必须为1的约束。
965

被折叠的 条评论
为什么被折叠?



