链接:https://www.nowcoder.com/acm/contest/201/C
来源:牛客网
算术是为数不多的会让Kuon感到棘手的事情。通常她会找Haku帮忙,但是Haku已经被她派去买东西了。于是她向你寻求帮助。
给出一个关于变量x,y的不定方程ax+by=c,显然这个方程可能有多个整数解。Kuon想知道如果有解,使得p2*x2+p1*x+q2*y2+q1*y最小的一组整数解是什么。为了方便,你只需要输出p2*x2+p1*x+q2*y2+q1*y的最小值。
给出一个关于变量x,y的不定方程ax+by=c,显然这个方程可能有多个整数解。Kuon想知道如果有解,使得p2*x2+p1*x+q2*y2+q1*y最小的一组整数解是什么。为了方便,你只需要输出p2*x2+p1*x+q2*y2+q1*y的最小值。
#include <cstdio> #include <cstring> #include <cmath> #include<algorithm> #include<iostream> using namespace std; typedef long long ll; ll p2,p1,q2,q1; ll a, b, c, d, x, y; ll ans=1e18; ll Exgcd(ll a, ll b) { if(b==0){ x=1, y=0;return a;} ll r = Exgcd(b, a%b); ll tp=x; x = y; y = tp-a/b*y; return r; } int main() { cin>>a>>b>>c>>p1>>p2>>q1>>q2; d = Exgcd(a, b); if(((a==0)&&(b==0)&&c) || c%d!=0 ) printf("Kuon "); else{ for(int i=-100005;i<=100005;i++){ if((c-a*i)%b==0){ ll iy=(c-a*i)/b; ll ac=p2*i*i+p1*i+q2*iy*iy+q1*iy; ans=min(ans,ac); } } cout<<ans<<endl; } return 0; }