結果
問題 | No.8035 2018 |
ユーザー |
![]() |
提出日時 | 2018-04-02 00:06:40 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 1,632 ms / 2,000 ms |
コード長 | 1,030 bytes |
コンパイル時間 | 510 ms |
コンパイル使用メモリ | 60,380 KB |
実行使用メモリ | 14,664 KB |
最終ジャッジ日時 | 2024-06-26 06:18:01 |
合計ジャッジ時間 | 18,955 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 7 |
ソースコード
#include <iostream> #include <vector> using namespace std; bool f[5111444]; bool not_prime[5111444]; int main() { int y = 5111443; not_prime[0] = true; not_prime[1] = true; vector<int>primes; for (int i = 2; i <= y; i++) { if (not_prime[i])continue; int x = i; bool flag = true; for (int j = 2; j*j <= x; j++) { if (x%j == 0) { flag = false; break; } } if (flag) { for (int j = 2 * i; j <= y; j += i) { not_prime[j] = true; } } } for (int i = 2; i <= y; i++) { if (not_prime[i]==false)primes.push_back(i); } bool flag = true; for (int i = 0; i < primes.size(); i++) { long long a = primes[i]; if (flag && a*a*a > y)flag = false; if (flag)f[a*a*a] = true; for (int j = i + 1; j < primes.size(); j++) { long long b = primes[j]; long long c = a*b; if (c > y)break; f[c] = true; } } int N; cin >> N; int cnt = 0; for (int i = 0; i <= y; i++) { if (f[i]) { cnt++; } if (cnt == N) { cout << i << endl; break; } } return 0; }