結果
| 問題 |
No.955 ax^2+bx+c=0
|
| コンテスト | |
| ユーザー |
agataYMGT
|
| 提出日時 | 2019-12-28 11:13:48 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 150 ms / 2,000 ms |
| コード長 | 1,706 bytes |
| コンパイル時間 | 3,661 ms |
| コンパイル使用メモリ | 78,276 KB |
| 実行使用メモリ | 42,184 KB |
| 最終ジャッジ日時 | 2024-10-11 07:06:17 |
| 合計ジャッジ時間 | 24,233 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 122 |
ソースコード
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;
public class No955 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
BigDecimal A = new BigDecimal(a);
BigDecimal B = new BigDecimal(b);
BigDecimal C = new BigDecimal(c);
if(a == 0) {
if(b == 0) {
if(c == 0) {
System.out.println(-1);
return;
} else {
System.out.println(0);
return;
}
} else {
System.out.println(1);
System.out.println(BigDecimal.ZERO.subtract(C).divide(B, 20, RoundingMode.HALF_EVEN));
return;
}
}
BigDecimal D = new BigDecimal(b);
D = D.multiply(B).subtract(new BigDecimal(4).multiply(A).multiply(C));
if(D.compareTo(BigDecimal.ZERO) == 1) {
System.out.println(2);
BigDecimal answer1 = BigDecimal.ZERO.subtract(B).subtract(sqrt(D)).divide(new BigDecimal(2).multiply(A), 20, RoundingMode.HALF_EVEN);
BigDecimal answer2 = BigDecimal.ZERO.subtract(B).add(sqrt(D)).divide(new BigDecimal(2).multiply(A), 20, RoundingMode.HALF_EVEN);
System.out.println(answer1.min(answer2));
System.out.println(answer1.max(answer2));
} else if(D.compareTo(BigDecimal.ZERO) == 0) {
System.out.println(1);
System.out.println(BigDecimal.ZERO.subtract(B).divide(new BigDecimal(2).multiply(A), 20, RoundingMode.HALF_EVEN));
} else {
System.out.println(0);
}
}
public static BigDecimal sqrt(BigDecimal a) {
BigDecimal a2 = a.add(BigDecimal.ZERO);
for(int i = 0; i < 50; i++) {
a2 = a2.subtract(a2.pow(2).subtract(a).divide(a2.multiply(new BigDecimal(2)), 30, RoundingMode.HALF_EVEN));
}
return a2;
}
}
agataYMGT