結果
問題 | No.955 ax^2+bx+c=0 |
ユーザー |
👑 ![]() |
提出日時 | 2022-03-06 17:48:05 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,730 bytes |
コンパイル時間 | 2,629 ms |
コンパイル使用メモリ | 200,436 KB |
最終ジャッジ日時 | 2025-01-28 07:18:27 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 97 WA * 25 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:76:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 76 | scanf("%lld%lld%lld",&a,&b,&c); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> #include <iostream> #include <limits> #include <numeric> #include <type_traits> #include <bitset> #include <map> #include <set> #include <unordered_map> #include <unordered_set> #include <queue> #include <list> using namespace std; #define rep(i,n,m) for(ll (i)=(n);(i)<(m);(i)++) #define rrep(i,n,m) for(ll (i)=(n);(i)>(m);(i)--) using ll = long long; using ld = long double; const ll mod = 1000000007; const ll inf = 1000000000; const ll INF = 1e15; void pline(vector<ll> lis){ rep(i,0,lis.size()){ printf ("%lld",lis[i]); if (i != lis.size()-1) printf(" "); else printf("\n"); } } void plineendl(vector<ll> lis){ rep(i,0,lis.size()){ cout << lis[i] << " "; } cout << endl; } ll llmin(ll x , ll y){ if ( x < y ) return x; else return y; } vector<ld> solve(ll a, ll b, ll c){ vector<ld> ret(0); if (a == 0 && b == 0 && c == 0){ ret.push_back(INF); }else if (a == 0 && b == 0){ //なにもしない }else if (a == 0){ ret.push_back(-(ld)c/ (ld)b); }else{ ll kai = b*b - 4*a*c; if (kai < 0){ //なにもしない }else if (kai == 0){ ret.push_back(-b/((ld)2*a)); }else{ ld sq = sqrt((double)kai); ret.push_back( (-b+sq)/(2*a) ); ret.push_back( (-b-sq)/(2*a) ); } } return ret; } int main(){ ll a,b,c; scanf("%lld%lld%lld",&a,&b,&c); auto ans = solve(a,b,c); if (ans.size() == 0){ cout << 0 << endl; }else if (ans[0] == INF){ cout << -1 << endl; }else{ sort(ans.begin(),ans.end()); cout << ans.size() << endl; rep(i,0,ans.size()){ cout << std::setprecision(13) << ans[i] << endl; } } } /* int main(){ ll N,R; scanf("%lld%lld",&N,R); vector<vector<ll>> xy; rep(i,0,N){ ll x,y; scanf("%lld%lld",&x,&y); xy.push_back({x,y}); } //線分はいいが、内外判定がきついな rep(i,0,N){ rep } vector<vector<ld>> stime(N+1,vector<ld> (N+1,1e9)); vector<vector<ld>> etime(N+1,vector<ld> (N+1,1e9)); rep(i,0,N){ rep(j,0,i){ ll X = P[j][0]- P[i][0]; ll Y = P[j][1]- P[i][1]; ll VX = P[j][2]-P[i][2]; ll VY = P[j][3]-P[i][3]; // まず、直線の式を算出 //時刻 tが直接二次方程式の解になる vector<ld> time = solve(vx*vx+vy*vy, 2*x*vx+2*y*vy, x*x+y*y-D*D); printf ("vertices = %lld %lld\n",i,j); pline(time); } } } */ /* */