本地0错0警告,到了正在蒸蒸日上的洛谷就CE
#include <bits/stdc++.h>
using namespace std;
int __gcd_error(int x, int y)
{
while(y^=x^=y^=x%=y);
return x;
}
double a1,a2,b1,b2;
int ZXK,ZXB,x,x1,x2,y1=100,y2=100;
double k,b;
int main()
{
cin>>a1>>b1>>a2>>b2;
k=(b2-b1)/(a2-a1);
ZXK=(int)k;
b=b1-k*a1;
ZXB=(int)b;
cout<<"y=";
if(ZXK==k && ZXB==b) {
if(ZXB==0)
cout<<ZXK<<"x";
else {
if(ZXB>0)
printf("%dx+%d",ZXK,ZXB);
if(ZXB<0)
printf("%dx%d",ZXK,ZXB);
}
}
else if(ZXK==k && ZXB!=b) {
int flag=0;
ZXB=int(b*y1);
x=__gcd_error(ZXB,int(y1));
ZXB/=x;
y1/=x;
if(flag)
ZXB=-ZXB,y1=-y1;
if(ZXB>0)
printf("%dx+%d/%d",ZXK,ZXB,y1);
if(ZXB<0)
printf("%dx%d/%d",ZXK,ZXB,y1);
}
else if(ZXK!=k && ZXB!=b) {
int fg1=0,fg2=0;
if(k<0)
fg1=1;
if(b<0)
fg2=1;
ZXK=int(k*y1);
x1=__gcd_error(ZXK,int(y1));
ZXK/=x1;y1/=x1;
ZXB=int(b*y2);
x2=__gcd_error(ZXB,int(y2));
ZXB/=x2;y2/=x2;
if(fg1)
ZXK=-ZXK,y1=-y1;
if(fg2)
ZXB=-ZXB,y2=-y2;
if(ZXB>0)
printf("%d/%d*x+%d/%d",ZXK,y1,ZXB,y2);
if(ZXB<0)
printf("%d/%d*x%d/%d",ZXK,y1,ZXB,y2);
}
else if(ZXK!=k && ZXB==b) {
int flag=0;
if(k<0)
flag=1;
ZXK=int(k*y1);
x=__gcd_error(ZXK,int(y1));
ZXK/=x;y1/=x;
if(flag)
ZXK=-ZXK,y1=-y1;
if(ZXB>0)
printf("%d/%d*x+%d",ZXK,y1,ZXB);
if(ZXB<0)
printf("%d/%d*x%d",ZXK,y1,ZXB);
}
return 0;
}