結果
| 問題 |
No.955 ax^2+bx+c=0
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 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);
}
}
}
*/
/*
*/
SPD_9X2