結果
| 問題 |
No.955 ax^2+bx+c=0
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-09-12 17:57:12 |
| 言語 | Java (openjdk 23) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 9,602 bytes |
| コンパイル時間 | 3,613 ms |
| コンパイル使用メモリ | 90,424 KB |
| 実行使用メモリ | 55,524 KB |
| 最終ジャッジ日時 | 2025-01-02 10:31:48 |
| 合計ジャッジ時間 | 13,910 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 3 |
| other | RE * 122 |
ソースコード
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.CharBuffer;
import java.io.IOException;
import java.nio.charset.CharsetDecoder;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;
import java.io.UncheckedIOException;
import java.nio.charset.Charset;
import java.security.AccessControlException;
import java.io.Writer;
import java.util.NoSuchElementException;
import java.io.InputStream;
/**
* Built using CHelper reloaded plug-in
* Actual solution is at the top
*
* @author mikit
*/
public class Main {
public static void main(String[] args) {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
LightScanner2 in = new LightScanner2(inputStream);
LightWriter2 out = new LightWriter2(outputStream);
No955Ax2bxc0 solver = new No955Ax2bxc0();
solver.solve(1, in, out);
out.close();
}
static class No955Ax2bxc0 {
public void solve(int testNumber, LightScanner2 in, LightWriter2 out) {
long a = in.longs(), b = in.longs(), c = in.longs();
long d = b * b - 4 * a * c;
if (a == 0 && b == 0 && c == 0) {
out.ans(-1).ln();
} else if (a == 0 && b == 0) {
out.ans(0).ln();
} else if (a == 0) {
out.ans(1).ln();
out.ans(-c / (double) b).ln();
} else if (d < 0) {
out.ans(0).ln();
} else if (d == 0) {
out.ans(1).ln();
out.ans(-b / (2.0 * a), 20).ln();
} else if (b > 0) {
double s = Math.sqrt(d);
out.ans(2).ln();
double x = (-b - s) / (2.0 * a);
out.ans(c / (a * x), 20).ln();
out.ans(x, 20).ln();
} else {
double s = Math.sqrt(d);
out.ans(2).ln();
double x = (-b + s) / (2.0 * a);
out.ans(x, 20).ln();
out.ans(c / (a * x), 20).ln();
}
}
}
static class LightWriter2 implements AutoCloseable {
private static final int BUF_SIZE = 1024 * 1024;
private static final int BUF_THRESHOLD = 64 * 1024;
private static final int DEFAULT_DOUBLE_ACC = 15;
private final OutputStream out;
private final byte[] buf = new byte[BUF_SIZE];
private int ptr;
private final Field fastStringAccess;
private boolean autoflush = false;
private boolean breaked = true;
public LightWriter2(OutputStream out) {
this.out = out;
Field f;
try {
f = String.class.getDeclaredField("value");
f.setAccessible(true);
if (f.getType() != byte[].class) f = null;
} catch (ReflectiveOperationException | AccessControlException ignored) {
f = null;
}
this.fastStringAccess = f;
}
public LightWriter2(Writer out) {
this.out = new LightWriter2.WriterOutputStream(out);
this.fastStringAccess = null;
}
private void allocate(int n) {
if (ptr + n <= BUF_SIZE) return;
try {
out.write(buf, 0, ptr);
ptr = 0;
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
if (BUF_SIZE < n) throw new IllegalArgumentException("Internal buffer exceeded");
}
public void close() {
try {
out.write(buf, 0, ptr);
ptr = 0;
out.flush();
out.close();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
public LightWriter2 print(char c) {
allocate(1);
buf[ptr++] = (byte) c;
breaked = false;
return this;
}
public LightWriter2 print(String s) {
byte[] bytes;
if (this.fastStringAccess == null) bytes = s.getBytes();
else {
try {
bytes = (byte[]) fastStringAccess.get(s);
} catch (IllegalAccessException ignored) {
bytes = s.getBytes();
}
}
int n = bytes.length;
if (n <= BUF_THRESHOLD) {
allocate(n);
System.arraycopy(bytes, 0, buf, ptr, n);
ptr += n;
return this;
}
try {
out.write(buf, 0, ptr);
ptr = 0;
out.write(bytes);
out.flush();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
return this;
}
public LightWriter2 ans(double x, int n) {
if (!breaked) {
print(' ');
}
breaked = false;
if (x < 0) {
print('-');
x = -x;
}
x += Math.pow(10, -n) / 2;
print((long) x);
print('.');
x -= (long) x;
for (int i = 0; i < n; i++) {
x *= 10;
print((char) ('0' + ((int) x)));
x -= (int) x;
}
return this;
}
public LightWriter2 ans(double x) {
return ans(x, DEFAULT_DOUBLE_ACC);
}
private int print(long l) {
if (l == 0) {
print('0');
return 1;
} else if (l < 0) {
print('-');
l = -l;
}
int n = 0;
long t = l;
while (t > 0) {
t /= 10;
n++;
}
allocate(n);
for (int i = 1; i <= n; i++) {
buf[ptr + n - i] = (byte) (l % 10 + '0');
l /= 10;
}
ptr += n;
return n;
}
public LightWriter2 ans(int i) {
if (!breaked) {
print(' ');
}
breaked = false;
print(i);
return this;
}
public LightWriter2 ln() {
print(System.lineSeparator());
breaked = true;
if (autoflush) {
try {
out.flush();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
return this;
}
private static class WriterOutputStream extends OutputStream {
final Writer writer;
final CharsetDecoder decoder;
WriterOutputStream(Writer writer) {
this.writer = writer;
this.decoder = StandardCharsets.UTF_8.newDecoder();
}
public void write(int b) throws IOException {
writer.write(b);
}
public void write(byte[] b) throws IOException {
writer.write(decoder.decode(ByteBuffer.wrap(b)).array());
}
public void write(byte[] b, int off, int len) throws IOException {
writer.write(decoder.decode(ByteBuffer.wrap(b, off, len)).array());
}
public void flush() throws IOException {
writer.flush();
}
public void close() throws IOException {
writer.close();
}
}
}
static abstract class LightScannerAdapter implements AutoCloseable {
public abstract void close();
}
static class LightScanner2 extends LightScannerAdapter {
private static final int BUF_SIZE = 1024 * 1024;
private final InputStream stream;
private final byte[] buf = new byte[BUF_SIZE];
private int ptr;
private int len;
public LightScanner2(InputStream stream) {
this.stream = stream;
}
private int read() {
if (ptr < len) return buf[ptr++];
try {
ptr = 0;
len = stream.read(buf);
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
if (len == -1) return -1;
return buf[ptr++];
}
private void skip() {
int b;
while (isTokenSeparator(b = read()) && b != -1) ;
if (b == -1) throw new NoSuchElementException("EOF");
ptr--;
}
public long longs() {
skip();
int b = read();
boolean negate;
if (b == '-') {
negate = true;
b = read();
} else negate = false;
long x = 0;
for (; !isTokenSeparator(b); b = read()) {
if ('0' <= b && b <= '9') x = x * 10 + b - '0';
else throw new NumberFormatException("Unexpected character '" + b + "'");
}
return negate ? -x : x;
}
public void close() {
try {
stream.close();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
private static boolean isTokenSeparator(int b) {
return b < 33 || 126 < b;
}
}
}