結果
問題 |
No.955 ax^2+bx+c=0
|
ユーザー |
|
提出日時 | 2021-01-03 17:28:14 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,847 bytes |
コンパイル時間 | 1,714 ms |
コンパイル使用メモリ | 168,500 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 11:08:37 |
合計ジャッジ時間 | 4,681 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 94 WA * 28 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, n) for(int i = 0; i < (int)n; i++) #define ll long long #define ul unsigned long long template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } void solve2(ll b, ll c){ if(b==0){ if(c==0){ //cout << 3 << endl; cout << -1 << endl; }else{ cout << 0 << endl; } } else { cout << 1 << '\n'<<setprecision(24) << -(long double)c/(long double)b << endl; } } long double calc(ll la, ll lb, ll lc, ll sign){ long double a = (long double)la; long double b = (long double)lb; long double c = (long double)lc; return (-b+sign*sqrt(b*b-4*a*c))/(2*a); //return -(b/a)*(0.5)+sign*sqrt((b/a)*(b/a)*0.25-c/a); } void solve(ll a, ll b, ll c){ if(a==0){ solve2(b,c); return; } if(b==0){ if(c==0){ cout << 1 << '\n' << 0 << endl; } else if(a/abs(a) == c/abs(c)){ cout << 0 << endl; } else{ cout << 2 << '\n' << setprecision(24) << -sqrt(-(long double)c/(long double)a) << '\n' << sqrt(-(long double)c/(long double)a) << endl; } return; } if(4*((double)a/(double)b)*((double)c/(double)b)>1){ cout << 0 << endl; } else if(abs(4*((double)a/(double)b)*((double)c/(double)b)-1)<1e-12){ cout << 1 << '\n' <<setprecision(24) << -(double)b/(2*(double)a) << endl; } else { cout << 2 << '\n' <<setprecision(24) << min(calc(a,b,c,-1),calc(a,b,c,1)) << '\n' << max(calc(a,b,c,-1),calc(a,b,c,1)) << endl; } } int main() { //int T; //cin >>T; //ll a[T],b[T],c[T]; //rep(i,T){ // cin >> a[i] >> b[i] >> c[i]; //} ll a,b,c; cin >> a >> b >> c; //rep(i,T){ //solve(a[i],b[i],c[i]); //} solve(a,b,c); }