CSP-j T3求助
  • 板块题目总版
  • 楼主_zuoqingyuan
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/27 21:48
  • 上次更新2023/10/28 07:54:56
查看原帖
CSP-j T3求助
731650
_zuoqingyuan楼主2023/10/27 21:48
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int t,m,a,b,c,del,g;
int gcd(int n,int m){
    return m==0?n:gcd(m,n%m);
}
void print1(int z,int m){
	int gc,f=(z*m)>0?1:-1;
	z=abs(z),m=abs(m);
	gc=gcd(z,m);
	z/=gc,m/=gc,z*=f;
	if(m==1)printf("%d",z/m);
	else printf("%d/%d",z,m);
	return;
}
void print2(int dele,int m){
	int k=1,r=dele,f=1,gc;
	for(int i=2;i*i<=dele;i++)while(r%(i*i)==0)k*=i,r/=(i*i);
	m=abs(m);
	gc=gcd(m,k);
	m/=gc,k/=gc;
	if(k*1.0/(1.0*m)==1.0)printf("sqrt(%d)",r);
	else if(m==1)printf("%d*sqrt(%d)",k,r);
	else if(k==1)printf("sqrt(%d)/%d",r,m);
	else printf("%d*sqrt(%d)/%d",k,r,m);
	return;
}
int main(){
    cin>>t>>m;
    while(t--){
        cin>>a>>b>>c;
        del=b*b-4*a*c;
        if(del<0)cout<<"NO"<<endl;
        else{
            g=sqrt(del);
            if(g*g==del)print1((((-b+g)/(2*a)>(-b-g)/(2*a))?(-b+g):(-b-g)),2*a),printf("\n");
            else{
            	if(-b!=0)print1(-b,2*a),printf("+");
            	print2(del,2*a);
            	printf("\n");
			}
        }
    }
    return 0;
}

代码一直50pts,2,4,6,9,10测试点挂了,求调

2023/10/27 21:48
加载中...