这道题为什么第3个点WA?
QWQ
是有什么特殊的情况我没想到吗?
代码:
#include<bits/stdc++.h>
using namespace std;
void yuefen(int &m,int &n)//约分
{
int a,b;
a=abs(m);
b=abs(n);
int r=a%b;
for(int i=2;i<=min(a,b);i++)
{
if(a%i==0 && b%i==0)
{
a/=i;
b/=i;
i--;
}
}
m=(m<0)?-a:a;
n=(n<0)?-b:b;
}
int main()
{
int x1,x2,y1,y2;
int m,n,p,q;
int k,b;
bool flag_k=false,flag_b=false;
cin>>x1>>y1>>x2>>y2;
m=y1-y2;
n=x1-x2;
p=y1*x2-y2*x1;
q=x2-x1;
if(m/n*n==m)
{
k=m/n;
flag_k=true;
}
if(p/q*q==p)
{
b=p/q;
flag_b=true;
}
yuefen(m,n);
yuefen(p,q);
cout<<"y=";
if(flag_k)
{
cout<<k<<"x";
}
else
{
if(m<0 && n>0 || m>0 && n<0)
{
cout<<"-";
m=abs(m);
n=abs(n);
}
cout<<m<<"/"<<n<<"*x";
}
if(b==0)
{
return 0;
}
if(flag_b)
{
if(b>0)
{
cout<<"+";
}
cout<<b;
}
else
{
if(p>0 && q>0 || p<0 && q<0)
{
cout<<"+";
p=abs(p);
q=abs(q);
}
if(p<0 && q>0 || p>0 && q<0)
{
cout<<"-";
p=abs(p);
q=abs(q);
}
cout<<p<<"/"<<q;
}
return 0;
}