题目链接: [Utawarerumono]
大致题意:
给出一个关于变量x,y的不定方程ax+by=c,若无解,输出Kuon,若有解,找到满足p*x2+p1* x+q2* y2+q1* y最小解的一组,输出p* *x2+p1* x+q2* y2+q1* y的值
解题思路:
判断ax+by=c是否有解,无解:c不能整除gcd(a,b)或者a == 0 && b == 0 && c != 0
暴力枚举x,找到满足条件的最小值
AC代码:
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll a, b, c, p1, p2, q1, q2;
ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a % b);
}
int main(void)
{
cin >> a >> b >> c >> p1 >> p2 >> q1 >> q2;
ll d = gcd(a, b);
if (c % d || a == 0 && b == 0 && c != 0)cout << "Kuon" << endl;
else {
ll ans = 1e18;
for (int x = -100000; x <= 100000; ++x) {
if ((c - a * x) % b == 0) {
ll y = (c - a * x) / b;
ans = min(ans, p1 * x + p2 * x * x + q1 * y + q2 * y * y);
}
}
cout << ans << endl;
}
return 0;
}