結果

問題 No.955 ax^2+bx+c=0
ユーザー ks2mks2m
提出日時 2019-12-18 00:47:54
言語 Java
(openjdk 23)
結果
WA  
実行時間 -
コード長 1,802 bytes
コンパイル時間 1,875 ms
コンパイル使用メモリ 83,636 KB
実行使用メモリ 51,484 KB
最終ジャッジ日時 2024-07-07 00:01:23
合計ジャッジ時間 10,122 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 96 WA * 12 RE * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] sa = br.readLine().split(" ");
		long a = Integer.parseInt(sa[0]);
		long b = Integer.parseInt(sa[1]);
		long c = Integer.parseInt(sa[2]);
		br.close();

		if (a == 0) {
			if (b == 0) {
				if (c == 0) {
					System.out.println(-1);
				} else {
					System.out.println(0);
				}
			} else {
				System.out.println(1);
				System.out.println((double) -c / b);
			}
		} else if (b * b == 4 * a * c) {
			System.out.println(1);
			System.out.println((double) -b / 2 / a);
		} else if (b * b > 4 * a * c) {
			long d = b * b - 4 * a * c;
			BigDecimal bd = BigDecimal.valueOf(d);
			BigDecimal sq = BigDecimal.valueOf((long) Math.sqrt(d));
			StringBuilder sb = new StringBuilder("0.");
			for (int i = 0; i < 20; i++) {
				for (int j = 0; j < 10; j++) {
					BigDecimal v = new BigDecimal(sb.toString() + "1");
					BigDecimal tmp = sq.add(v);
					tmp = tmp.multiply(tmp);
					if (tmp.compareTo(bd) > 0) {
						break;
					}
					sq = sq.add(v);
				}
				sb.append("0");
			}
			System.out.println(2);
			BigDecimal ba = BigDecimal.valueOf(a);
			BigDecimal two = BigDecimal.valueOf(2);
			BigDecimal mb = BigDecimal.valueOf(b).negate();
			BigDecimal ans1 = mb.subtract(sq).divide(two).divide(ba);
			BigDecimal ans2 = mb.add(sq).divide(two).divide(ba);
			if (ans1.compareTo(ans2) < 0) {
				System.out.println(ans1.toPlainString());
				System.out.println(ans2.toPlainString());
			} else {
				System.out.println(ans2.toPlainString());
				System.out.println(ans1.toPlainString());
			}
		} else {
			System.out.println(0);
		}
	}
}
0