求调j组T3,1wa,2T
  • 板块灌水区
  • 楼主lxc_awa
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 14:24
  • 上次更新2023/11/2 12:15:29
查看原帖
求调j组T3,1wa,2T
626785
lxc_awa楼主2023/10/21 14:24

RT

#include<bits/stdc++.h>
using namespace std;
long long a[5005],b[5005],c[5005],p[5005],n,m;
int main(){
    freopen("uqe.in","r",stdin);
    freopen("uqe.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i]>>c[i];
        p[i]=b[i]*b[i]-4*a[i]*c[i];
    }
    for(int i=1;i<=n;i++){
        if(p[i]<0)cout<<"NO";
        else if(p[i]==0){
            double q;
            q=1.0*sqrt(p[i]);
            long long s=q*1000;
            if(s*s==p[i]*1000000){
                long long fm=2*a[i];
                long long fz=-b[i];
                if(fz<0&&fm>0)cout<<'-';
                if(fz>0&&fm<0)cout<<'-';
                fm=abs(fm);
                fz=abs(fz);
                long long g=__gcd(fm,fz);
                fm/=g;
                fz/=g;
                if(fm==1)cout<<abs(fz);
                else cout<<abs(fz)<<'/'<<abs(fm);
            }
        }
        else{
            double q;
            q=1.0*sqrt(p[i]);
            long long s=q*1000;
            if(s*s==p[i]*1000000){
                long long fm=2*a[i];
                long long fz=-b[i];
                long long num=q;
                if(fm>0)fz+=q;
                else fz-=q;
                if(fz<0&&fm>0)cout<<'-';
                if(fz>0&&fm<0)cout<<'-';
                fm=abs(fm);
                fz=abs(fz);
                long long g=__gcd(fm,fz);
                fm/=g;
                fz/=g;
                if(fm==1)cout<<fz;
                else cout<<abs(fz)<<'/'<<abs(fm);
            }
            else{
                long long np=p[i];
                long long fm1=2*a[i];
                long long fz1=-b[i];
                long long g1=__gcd(fm1,fz1);
                fm1/=g1;
                fz1/=g1;
                if(fz1<0&&fm1>0)cout<<'-';
                if(fz1>0&&fm1<0)cout<<'-';
                if(fz1!=0){
                    if(fm1==1)cout<<abs(fz1)<<'+';
                    else cout<<abs(fz1)<<'/'<<abs(fm1)<<'+';
                }
                long long fm2,fz2;
                fm2=2*a[i];
                fz2=1;
                for(int j=p[i]/2+1;j>=1;j--){
                    if(np%j==0){
                        double x=sqrt(j);
                        long long sx=x*1000;
                        if(sx*sx==j*1000000){
                            fz2*=(long long)(x);
                            np/=j;
                        }
                    }
                }
                fm2=abs(fm2);
                fz2=abs(fz2);
                long long g2=__gcd(fm2,fz2);
                fm2/=g2;
                fz2/=g2;
                if(fm2==1&&fz2==1)cout<<"sqrt("<<np<<")";
                else if(fm2==1)cout<<fz2<<"*sqrt("<<np<<")";
                else if(fz2==1)cout<<"sqrt("<<np<<")/"<<fm2;
                else cout<<fz2<<"*sqrt("<<np<<")/"<<fm2;
            }
        }
        cout<<endl;
    }
    return 0;
}
2023/10/21 14:24
加载中...