-J T3求调
  • 板块学术版
  • 楼主changpin_zhze
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 17:12
  • 上次更新2023/11/2 12:13:29
查看原帖
-J T3求调
1062076
changpin_zhze楼主2023/10/21 17:12

rt 记录

#include<bits/stdc++.h>
using namespace std;
int t,m;
struct node{
    int p;
    int q;
};
int gcd(int a,int b){
    if(b==0){
        return a;
    }else{
        return gcd(b,a%b);
    }
}
node simp(node n){
    if(n.p==0)return {0,0};
    if(n.p%n.q==0)return {n.p/n.q,0};
    bool f=(n.p>0&&n.q<0)||(n.p<0&&n.q>0);
    n.p=abs(n.p);n.q=abs(n.q);
    int t=gcd(n.p,n.q);
    n.p/=t;
    n.q/=t;
    if(f){
        return {-n.p,n.q};
    }else{
        return {n.p,n.q};
    }
}
int main(){
    //freopen("uqe.in","r",stdin);
    //freopen("uqe.out","w",stdout);
    cin>>t>>m;
    while(t--){
        int a,b,c,i,j;
        int de;
        cin>>a>>b>>c;
        de=b*b-4*a*c;
        if(de<0){
            cout<<"NO\n";
            continue;
        }
        bool isra=0;
        node ans;
        if((int)sqrt(de)*(int)sqrt(de)==de){
            isra=1;
        }
        if(isra){
            if(a>0){
                ans={-b+(int)sqrt(de),2*a};
                ans=simp(ans);
            }else{
                ans={-b-(int)sqrt(de),2*a};
                ans=simp(ans);
            }
            if(ans.q==0){
                cout<<ans.p<<endl;;
            }else{
                cout<<ans.p<<"/"<<ans.q<<endl;
            }
        }else{
            node q1,q2;
            q1={-b,2*a};
            q1=simp(q1);
            if(q1.p!=0){
                if(q1.q==0){
                    cout<<q1.p;
                }else{
                    cout<<q1.p<<"/"<<q1.q;
                }
                if(a<0){
                    a=abs(a);
                    cout<<"-";
                }else{
                    cout<<"+";
                }
            }
            q2={1,2*a};
            for(int i=2;i*i<=de;i++){
                while(de%(i*i)==0){
                    de/=(i*i);
                    q2.p*=i;
                }
            }
            q2=simp(q2);
            if(q2.q==0){
                if(q2.p==1){
                    cout<<"sqrt("<<de<<")\n";
                }else{
                    cout<<q2.p<<"*"<<"sqrt("<<de<<")\n";
                }
            }else{
                if(q2.p==1){
                    cout<<"sqrt("<<de<<")/"<<q2.q<<endl;
                }else{
                    cout<<q2.p<<"*"<<"sqrt("<<de<<")/"<<q2.q<<endl;
                }
            }
        }
    }
    return 0;
}

2023/10/21 17:12
加载中...