社区讨论

[悬关]关于申诉

学术版参与者 5已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@logk4mh5
此快照首次捕获于
2023/11/02 10:18
2 年前
此快照最后确认于
2023/11/02 11:43
2 年前
查看原帖
rt.下面这份J T3代码将freopen去掉后lg评测10pts,想要问一下申诉能否成功(不申诉100+0+0+25,申诉后如果成功125->135有希望2=)
CPP
#include"bits/stdc++.h"
using namespace std;
int gcd(int x,int y)
{
	if (x%y==0)
	{
		return y;
	}
	if (y%x==0)
	{
		return x;
	}
	if (y>x)
	{
		swap(x,y);
	}
	return gcd((x-y),y);
}
int main()
{
	char z=char(92);
	freopen("uqe.in","r",stdin);
	freopen("uqe.out","w",stdout);
	int T,M,a,b,c,aba,q,p,x,intss,savedp,savedq,u,kt=1;
	bool flag=true;
	scanf("%d%d",&T,&M);
	for (int i=1;i<=T;i++)
	{
	   scanf("%d%d%d",&a,&b,&c);
	   if (c==0)
	   {
	   	if (b==0)
	   	{
	   		printf("0");
		   }
		   if ((a*b)>0)
		   {
		   	printf("0");
		   }
		   if ((a*b)<0)
		   {
		   		a*=(-1);
		   		b*=(-1); 
		   	x=gcd(a,b);
		   	a/=x;
		   	b/=x;
		   	if (a==1)
		   	{
		   		printf("%d",abs(b));
			   }
			   if (a!=1)
			   {
			   	  printf("%d",abs(b));
			   	  printf("%c",z);
			   	  printf("%d",abs(c));
			   }
		   }
		   printf("\r\n");
		   continue;
	   }
	   if (b==0)
	   {
	   	  if (c==0) 
	   	  {
	   	  	printf("0");
		  }
		  if (c>0)
		  {
		  	printf("-1");
		  }
		  if (c<0)
		  {
		  	x=gcd(a,c);
		  	a=a/x;
		  	c=c/x;
		  	c=(-1)*c;
		  	flag=false;
		  	u=c;
		  	 for (int i=2;i<=(int(sqrt(u))+1);i++)
		  	 {
		  	 	if (u==1)
		  	 	{
		  	 		flag=true;
		  	 		break;
				}
		  	 	while (1)
		  	 	{
		  	 		if (u%(i*2)==0)
		  	 		{
		  	 			u/=(i*2);
		  	 			kt*=i;
		                continue;
				    }
				    break;
				} 
			}
			if (kt==1&&flag)
			{
				printf("1");
			}
			if (kt==1&&!flag)
			{
				printf("sqrt");
				printf("(");
				printf("%d",u);
				printf(")");
			}
			if (kt!=1&&flag)
			{
				printf("%d",kt);
			}
			if (kt!=1&&!flag)
			{
				printf("%d",kt);
				if (u!=1)
				{
				printf("sqrt");
				printf("(");
				printf("%d",u);
				printf(")");
				}
			}
		  }
		  printf("\r\n");
		  continue;
	   }
	   if (((b*b)-(4*a*c))<0)
	   {
	   	  printf("NO");
	   	  printf("\r\n");
	   	  continue;
	   }
	   flag=true;
	   u=((b*b)-(4*a*c));
	   for (int j=2;j<=sqrt(u);j++)
	   {
	   	   if (!flag)
	   	   {
	   		break;
		   }
	   	   while (u%j==0)
	   	   {
	   	  	 if (u%j==0&&u%(j*j)!=0)
	   	  	 {
	   	  		flag=false;
	   	  		break;
		     }
		     u/=(j*j);
	       }
	   }
	   if (flag)
	   {
	   	  if (a>0)
	   	  {
	   	  	q=(2*a);
	   	    p=(sqrt(((b*b)-(4*a*c)))-b);
	   	    x=gcd(abs(q),abs(p));
	   	    p/=x;
	   	    q/=x;
	   	    if (q==1)
	   	    {
	   	    	printf("%d",p);
	   	    	printf("\r\n");
			}
			if (q!=1)
			{
				printf("%d",p);
				printf("/");
				printf("%d",q);
				printf("\r\n");
			}
		  }
		  if (a<0)
		  {
		  	q=(2*a);
	   	    p=(-1)*(sqrt(((b*b)-(4*a*c)))+b);
	   	    x=gcd(abs(q),abs(p));
	   	    p/=x;
	   	    q/=x;
	   	    if (q==(-1))
	   	    {
	   	    	p*=(-1);
	   	    	printf("%d",p);
	   	    	printf("\r\n");
			}
			if (q!=1)
			{
				q*=(-1);
				p*=(-1);
				printf("%d",p);
				printf("/");
				printf("%d",q);
				printf("\r\n");
			}
		  }
	   }
	   if (!flag)
	   {
	   	  intss=1;
	   	  u=((b*b)-(4*a*c));
	   	  for (int j=2;j<=sqrt(u);j++)
	   	  {
			 while (u%(j*j)==0) 
			 {
			 	intss*=j;
			 	u/=(j*2);
			 }
		  }
		  if (a>0)
	   	  {
	   	  	q=(2*a);
	   	    p=-b;
	   	    savedp=p;
	   	    savedq=q;
	   	    x=gcd(abs(q),gcd(abs(p),abs(intss)));
	   	    p/=x;
	   	    q/=x;
	   	    intss/=x;
	   	    if (q==1)
	   	    {
	   	    	printf("%d",p);
	   	    	printf("+");
	   	    	if (intss!=1)
	   	    	{
	   	    		printf("%d",intss);
				}
	   	    	printf("*");
	   	    	printf("sqrt");
	   	    	printf("(");
	   	    	printf("%d",u);
	   	    	printf(")");
	   	    	printf("\r\n");
			}
			if (q!=1)
		    {
				printf("%d",p);
	   	    	printf("+");
	   	    	if (intss!=1)
	   	    	{
	   	    		printf("%d",intss);
				}
	   	    	printf("*");
	   	    	printf("sqrt");
	   	    	printf("(");
	   	    	printf("%d",u);
	   	    	printf(")");
	   	    	printf("%c",z);
	   	    	printf("%d",q);
	   	    	printf("\r\n");
			}
		  }
		  if (a<0)
	   	  {
	   	  	q=(2*a);
	   	    p=-b;
	   	    savedp=p;
	   	    savedq=q;
	   	    x=gcd(abs(q),gcd(abs(p),abs(intss)));
	   	    p/=x;
	   	    q/=x;
	   	    intss/=x;
	   	    if (q==1)
	   	    {
	   	    	p*=(-1);
	   	    	q*=(-1);
	   	    	printf("%d",p);
	   	    	printf("-");
	   	    	if (intss!=1)
	   	    	{
	   	    		printf("%d",intss);
				}
	   	    	printf("*");
	   	    	printf("sqrt");
	   	    	printf("(");
	   	    	printf("%d",u);
	   	    	printf(")");
	   	    	printf("\r\n");
			}
			if (q!=1)
		    {
		    	p*=(-1);
	   	    	q*=(-1);
				printf("%d",p);
	   	    	printf("-");
	   	    	if (intss!=1)
	   	    	{
	   	    		printf("%d",intss);
				}
	   	    	printf("*");
	   	    	printf("sqrt");
	   	    	printf("(");
	   	    	printf("%d",u);
	   	    	printf(")");
	   	    	printf("%d",z);
	   	    	printf("%d",q);
	   	    	printf("\r\n");
			}
		  }
	   }
	}
	return 0;
}

回复

14 条回复,欢迎继续交流。

正在加载回复...