結果
問題 | No.843 Triple Primes |
ユーザー |
|
提出日時 | 2019-07-06 10:39:50 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 716 ms / 2,000 ms |
コード長 | 4,572 bytes |
コンパイル時間 | 4,431 ms |
コンパイル使用メモリ | 79,056 KB |
実行使用メモリ | 46,752 KB |
最終ジャッジ日時 | 2024-09-19 14:20:04 |
合計ジャッジ時間 | 22,209 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 42 |
ソースコード
import java.io.OutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.io.BufferedWriter;import java.util.Set;import java.util.InputMismatchException;import java.io.IOException;import java.util.TreeSet;import java.util.ArrayList;import java.util.List;import java.io.Writer;import java.io.OutputStreamWriter;import java.io.InputStream;/*** Built using CHelper plug-in* Actual solution is at the top*/public class Main {public static void main(String[] args) {InputStream inputStream = System.in;OutputStream outputStream = System.out;InputReader in = new InputReader(inputStream);OutputWriter out = new OutputWriter(outputStream);No843 solver = new No843();solver.solve(1, in, out);out.close();}static class No843 {public void solve(int testNumber, InputReader in, OutputWriter out) {int n = in.readInt();List<Integer> primes = new Prime(n).getPrimes();Set<Integer> set = new TreeSet<>(primes);int ans = 0;int m = primes.size();for (int i = 0; i < m && primes.get(i) * primes.get(i) <= 2 * n; i++) {for (int j = 0; j < m; j++) {if (set.contains(primes.get(i) * primes.get(i) - primes.get(j))) ans++;}}out.printLine(ans);}}static class Prime {private int n;private boolean[] isPrime;private ArrayList<Integer> primes;public Prime(int n) {this.n = n;isPrime = new boolean[n + 1];primes = new ArrayList<>();sieve();}private void sieve() {for (int i = 2; i <= n; i++) {if (!isPrime[i]) {primes.add(i);for (long j = (long) i * i; j <= n; j += i) {isPrime[(int) j] = true;}}}}public ArrayList<Integer> getPrimes() {return primes;}}static class InputReader {private InputStream stream;private byte[] buf = new byte[1024];private int curChar;private int numChars;private InputReader.SpaceCharFilter filter;public InputReader(InputStream stream) {this.stream = stream;}public int read() {if (numChars == -1) {throw new InputMismatchException();}if (curChar >= numChars) {curChar = 0;try {numChars = stream.read(buf);} catch (IOException e) {throw new InputMismatchException();}if (numChars <= 0) {return -1;}}return buf[curChar++];}public int readInt() {int c = read();while (isSpaceChar(c)) {c = read();}int sgn = 1;if (c == '-') {sgn = -1;c = read();}int res = 0;do {if (c < '0' || c > '9') {throw new InputMismatchException();}res *= 10;res += c - '0';c = read();} while (!isSpaceChar(c));return res * sgn;}public boolean isSpaceChar(int c) {if (filter != null) {return filter.isSpaceChar(c);}return isWhitespace(c);}public static boolean isWhitespace(int c) {return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;}public interface SpaceCharFilter {public boolean isSpaceChar(int ch);}}static class OutputWriter {private final PrintWriter writer;public OutputWriter(OutputStream outputStream) {writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));}public OutputWriter(Writer writer) {this.writer = new PrintWriter(writer);}public void close() {writer.close();}public void printLine(int i) {writer.println(i);}}}