結果
問題 | No.106 素数が嫌い!2 |
ユーザー | cympfh |
提出日時 | 2015-01-16 15:47:48 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 31 ms / 5,000 ms |
コード長 | 1,656 bytes |
コンパイル時間 | 1,503 ms |
コンパイル使用メモリ | 161,256 KB |
実行使用メモリ | 13,016 KB |
最終ジャッジ日時 | 2024-06-22 12:04:07 |
合計ジャッジ時間 | 2,693 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 23 ms
8,960 KB |
testcase_01 | AC | 13 ms
6,940 KB |
testcase_02 | AC | 13 ms
6,940 KB |
testcase_03 | AC | 12 ms
6,944 KB |
testcase_04 | AC | 21 ms
8,960 KB |
testcase_05 | AC | 30 ms
13,016 KB |
testcase_06 | AC | 29 ms
12,900 KB |
testcase_07 | AC | 30 ms
12,900 KB |
testcase_08 | AC | 14 ms
6,944 KB |
testcase_09 | AC | 14 ms
6,944 KB |
testcase_10 | AC | 29 ms
12,896 KB |
testcase_11 | AC | 20 ms
8,756 KB |
testcase_12 | AC | 31 ms
12,628 KB |
testcase_13 | AC | 13 ms
6,944 KB |
testcase_14 | AC | 12 ms
6,944 KB |
testcase_15 | AC | 13 ms
6,940 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; #define iota(i,n,b,s) for(int i=int(b);i!=int((b)+(s)*(n));i+=(s)) #define range(i,n,m) iota(i,(((n)>(m))?((n)-(m)):((m)-(n))),(n),((n)>(m)?-1:1)) #define rep(i,n) iota(i,(n),0,1) #define loop for(;;) #define INF (1e9) #define EPS (1e-9) #define cons(a,b) (make_pair(a,b)) #define car(a) (a.first) #define cdr(a) (a.second) #define cadr(a) (car(cdr(a))) #define cddr(a) (cdr(cdr(a))) #define all(a) a.begin(), a.end() #define trace(var) cerr<<">>> "<<#var<<" = "<<var<<endl; typedef long long Integer; typedef double Real; typedef vector<int> vi; typedef vector<string> vs; typedef map<string,int> Dictionary; const Real PI = acos(-1); typedef pair<Real, Real> P; // Point typedef pair<P, P> L; // segment or line template<class S, class T> ostream& operator<<(ostream& os, pair<S,T> p) { os << '(' << car(p) << ", " << cdr(p) << ')'; return os; } template<class T> ostream& operator<<(ostream& os, vector<T> v) { if (v.size() == 0) { os << "(empty)"; return os; } os << v[0]; for (int i=1, len=v.size(); i<len; ++i) os << ' ' << v[i]; return os; } bool* PrimeSieve(int n) { bool*s = new bool[n]; for (int i = 0; i < n; ++i) s[i] = true; s[0] = s[1] = false; for (int i = 2; i < n; ++i) if (s[i]) for (int j = i << 1; j < n; j += i) s[j] = false; return s; } int main(){ auto ps = PrimeSieve(2e6+10); int n, k; cin >> n >> k; vector<int> cs(n+1, 0); range (m, 2, n + 1) { if (ps[m]) { for (int k = m; k <= n; k += m) cs[k]++; } } int ans = 0; range (m, 2, n + 1) { if (cs[m] >= k) ++ans; } cout << ans << endl; return 0; }