WA 10求调
查看原帖
WA 10求调
381641
Thunderbolt_General楼主2023/11/2 20:18
#include<bits/stdc++.h>
using namespace std;
int n,a,b,c,d,gcdd,m,nun,ans=1,anss;
double sum;
int getans(int x)//开方 
{	
	int p=sqrt(x);
	for(int i=m;i>=1;i--)	
	{		
	if(x%(i*i)==0)		
	{			
	x/=(i*i);			
	ans=ans*i;		
	}
	}
	return x;
}
void shuchu(int x,int y)//有理数输出
{
	gcdd=__gcd(x,y);					
	if(y/gcdd<0)					
	printf("%d/%d\n",((0-x)/gcdd),(0-(y/gcdd)));					
	else printf("%d/%d\n",(x/gcdd),(y/gcdd));
}
int shuchu2(int x,int y)//有理数输出
{
	gcdd=__gcd(x,y);					
	if(y/gcdd<0)					
	printf("%d/%d+",((0-x)/gcdd),(0-(y/gcdd)));					
	else printf("%d/%d+",(x/gcdd),(y/gcdd));
	return gcdd;																																																																																																
}
void shuchu3(int x,int y,int z)//根号输出 
{
	if(x%y==0)
	{
		if(x==y)
		printf("sqrt(%d)\n",z);
		else printf("%d*sqrt(%d)\n",x/y,z);
	}
	else 
	{
		int ln=__gcd(x,y);
		if(x/ln==1) 
		printf("sqrt(%d)/%d\n",z,y/ln);
		else printf("%d*sqrt(%d)/%d\n",x/ln,z,y/ln);
	}
}
int main()
{	
	scanf("%d%d",&n,&m);	
	while(n--)	
	{	
		scanf("%d%d%d",&a,&b,&c);		
		d=b*b-(4*a*c);		
		if(d<0)		
		printf("NO\n");		
		else 		
		{					
			sum=sqrt(d);
			if(sum==int(sum))			
			{		
				nun=sum-b;		
				if((nun)%(2*a)==0)
				printf("%d\n",nun/(2*a));				
				else shuchu(nun,2*a);
			}			
			else 
			{
			ans=1;		
			anss=getans(d);
			if((b)%(2*a)==0)				
			{
			if((0-b/(2*a))!=0)
			printf("%d+",(0-b/(2*a)));
			shuchu3(ans,2*a,anss);
			}
			else 
			{
			 	shuchu2((0-b),2*a);
				shuchu3(ans,2*a,anss);
			}
			}
		}
	}
	return 0;
}
2023/11/2 20:18
加载中...