社区讨论

50pts求调

P9750[CSP-J 2023] 一元二次方程参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhj0o2xx
此快照首次捕获于
2025/11/03 18:48
4 个月前
此快照最后确认于
2025/11/03 18:48
4 个月前
查看原帖
真没招了
CPP
#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define INF 1e18
#define Shy return
#define code 0;
using namespace std;
ll T, M;
ll gcd(ll a, ll b) {
    return b == 0 ? a : gcd(b, a % b);
}
ll square(ll x){
    ll maxn = -1;
    for(ll i = 2; i * i <= x; i++){
        if(x % (i * i) == 0) maxn = max(maxn, i);
    }
    return maxn;
}
void pnum(ll x, ll a){
    if(x % 2 * a == 0){
        cout << x / (2 * a);
    }
    else if(x % 2 == 0){
        ll x1 = x / 2;
        cout << x1 << "/" << a;
    }
    else{
        cout << x << "/" << 2 * a;
    }
}
int main(){
    scanf("%lld%lld",&T, &M);
    while(T--){
        ll a, b, c;
        scanf("%lld%lld%lld",&a, &b, &c);
        ll del = b * b - (4 * a * c);
        if(del < 0){
            puts("NO");
            continue;
        }
        ll sqdel = sqrt(del);
        if(sqdel * sqdel == del){
            ll jie1 = (-b - sqdel) / (2 * a);
            ll jie2 = (-b + sqdel) / (2 * a);
            ll x = 0;
            if(jie1 > jie2){
                x = (-b - sqdel);
            }  
            else x = (-b + sqdel);
            pnum(x, a);
            cout << endl;
        }
        else{
            ll b1 = -b;
            pnum(b1, a);
            cout << "+";
            if(square(del) ==  -1){
                cout << "sqrt(" << del;
                cout <<")" << "/" << 2 * a << endl;
                continue;
            }
            else{
                ll q2 = square(del);
                del /= q2;
                cout << q2 << "*sqrt(" << del << ")" <<"/" << 2 * a<< endl;
            }
        }
    }
    Shy code
}

回复

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

正在加载回复...