csp-j求调,有什么没考虑到吗
  • 板块灌水区
  • 楼主Seaproyje
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 17:01
  • 上次更新2023/11/2 12:13:43
查看原帖
csp-j求调,有什么没考虑到吗
1035730
Seaproyje楼主2023/10/21 17:01

rt

#include<bits/stdc++.h>
using namespace std;
int t,m,a,b,c;
int gcd(int x,int y)
{
	if(x%y==0) return y;
	return gcd(y,x%y);
} 
int main()
{
	scanf("%d%d",&t,&m);
	while(t--)
	{
		scanf("%d%d%d",&a,&b,&c);
		if(b*b<4*a*c)
			printf("NO");
		else
		{
			int ans1=-b,ans2=b*b-4*a*c,num=sqrt(ans2),g;
			if(num*num==ans2)
			{
				ans1+=num*(a>0);
				ans2=0;
			}
			if(ans1!=0)
			{
				g=gcd(abs(ans1),abs(2*a));
				ans1/=g;
				if(ans1/abs(ans1)!=a/abs(a)) printf("-");
				printf("%d",abs(ans1));
				if(abs(2*a)!=g) printf("/%d",abs(2*a/g));
				if(ans2!=0) printf("+");
			}
			if(ans2!=0)
			{
				int cheng=1,chu=2*a;
				for(int i=num;i>=2;i--)
					if(ans2%(i*i)==0){
						cheng=i;
						ans2/=i*i;
						break;
					}
				g=gcd(abs(cheng),abs(chu));
				cheng=abs(cheng)/g,chu=abs(chu)/g;
				if(cheng!=1)
					printf("%d*",cheng);
					printf("sqrt(%d)",ans2);
				if(chu!=1)
					printf("/%d",chu);
			}
			if(ans1==0&&ans2==0) printf("0");	
		}
		puts("");
	}
}
2023/10/21 17:01
加载中...