結果
| 問題 |
No.106 素数が嫌い!2
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2014-11-19 15:37:14 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 316 ms / 5,000 ms |
| コード長 | 939 bytes |
| コンパイル時間 | 2,109 ms |
| コンパイル使用メモリ | 79,776 KB |
| 実行使用メモリ | 50,020 KB |
| 最終ジャッジ日時 | 2025-01-02 19:18:40 |
| 合計ジャッジ時間 | 6,139 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 |
ソースコード
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Main p = new Main();
}
public Main() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
System.out.println(solve(n, k));
}
public int solve(int n, int k) {
int[] sieve = new int[n+1];
Arrays.fill(sieve, Integer.MAX_VALUE);
for(int i=2;i<sieve.length;i++){
if(sieve[i] != Integer.MAX_VALUE)
continue;
for(int j=i;j<sieve.length;j+=i)
if(sieve[j] == Integer.MAX_VALUE)
sieve[j] = i;
}
int res = 0;
for(int i=2;i<sieve.length;i++){
int cur = i;
int count = 0;
while(cur > 1){
int j = sieve[cur];
while(cur%j==0)
cur /= j;
count++;
}
if(count>=k)
res++;
// System.out.println(String.format("%6d : %3d", i, count));
}
return res;
}
}