求助
查看原帖
求助
178195
人间温柔楼主2020/6/11 21:24

这道题为什么第33个点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;
}
2020/6/11 21:24
加载中...