算术是为数不多的会让Kuon感到棘手的事情。通常她会找Haku帮忙,但是Haku已经被她派去买东西了。于是她向你寻求帮助。
给出一个关于变量x,y的不定方程,显然这个方程可能有多个整数解。Kuon想知道如果有解,使得最小的一组整数解是什么。为了方便,你只需要输出的最小值。
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <math.h> #include <limits.h> #include <map> #include <stack> #include <queue> #include <vector> #include <set> #include <string> #define ll long long #define ull unsigned long long #define ms(a) memset(a,0,sizeof(a)) #define pi acos(-1.0) #define INF 0x7f7f7f7f #define lson o<<1 #define rson o<<1|1 const double E=exp(1); const int maxn=1e6+10; const int mod=1e9+7; using namespace std; ll gcd(ll a,ll b) { return b?gcd(b,a%b):a; } int main(int argc, char const *argv[]) { ios::sync_with_stdio(false); ll a,b,c; ll p1,p2; ll q1,q2; cin>>a>>b>>c; cin>>p1>>p2; cin>>q1>>q2; ll _=gcd(a,b); if(c%_) cout<<"Kuon"<<endl; else { ll x=((2*a*c*q2)/(b*b)+a*q1/b-p1)/(2*(p2+(a*a*q2)/(b*b))); ll x1=x,x2=x; while((c-a*x1)%b) x1--; while((c-a*x2)%b) x2++; ll a1=(c-a*x1)/b; ll a2=(c-a*x2)/b; ll res1=(p1*x1+p2*x1*x1+q2*a1*a1+q1*a1); ll res2=(p1*x2+p2*x2*x2+q2*a2*a2+q1*a2); cout<<min(res1,res2)<<endl; } return 0; }