csp-jT3 3和8RE,求原因
  • 板块学术版
  • 楼主zwxadz
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/10/26 20:14
  • 上次更新2023/11/2 11:18:16
查看原帖
csp-jT3 3和8RE,求原因
694647
zwxadz楼主2023/10/26 20:14
#include<bits/stdc++.h>
using namespace std;
int T,M,p;
int a,b,c;
int dirta,dir_;
bool f1=0;
int gcd(int x,int y)
{
	x=abs(x),y=abs(y);
	if(y==0)return x;
	return gcd(y,x%y);
}
void work3(int x)//分解质因数 
{
	p=1;
	int o=0;
	for(int i=2;i<=x;i++)
	{
		while(x%(i*i)==0)
		{
			o++;
			x/=(i*i);
		}
		p*=pow(i,o);
		o=0;
	}
	dir_=x;
	if(x==1)f1=1;
	return;
}
void work2(int x)
{
	if(dirta==0)return;
	int u=gcd(x,p);
	x/=u,p/=u;
	if(p!=1)
	{
		cout<<p<<"*";
	}
	cout<<"sqrt("<<dir_<<")";
	if(x!=1)
	{
		cout<<"/"<<x;
	}
	return;
}
void work1(int x,int y)//输出分数 
{
	if(x==0 && !f1)return;
	int u=gcd(abs(x),abs(y));
	x/=u,y/=u;
	if(y<0)x*=-1,y*=-1;
	if(y==1)
	{
		cout<<x;
	}
	else
	{
		cout<<x<<"/"<<y;
	}
	if(dirta!=0 && !f1)cout<<"+";
	return;
}
int main()//t3
{
	cin>>T>>M;
	while(T--)
	{
		cin>>a>>b>>c;
		dirta=b*b-4*a*c;
		p=0,dir_=0,f1=0;
		if(a<0)a*=-1,b*=-1,c*=-1;
		if(dirta<0 || a==0)cout<<"NO";
		else
		{
			work3(dirta);
			if(!f1)
			{
				work1(-b,2*a);
				work2(2*a);
				if(b==0 && dirta==0)cout<<0;
			}
			else work1(-b+p,2*a);
		}
		cout<<endl;
	}
	return 0;
}

我试过在主函数的最开始加了一个cout<<"a";然后还是RE。

2023/10/26 20:14
加载中...