結果
| 問題 |
No.144 エラトステネスのざる
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-07-17 12:47:27 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,119 bytes |
| コンパイル時間 | 1,962 ms |
| コンパイル使用メモリ | 192,760 KB |
| 最終ジャッジ日時 | 2025-02-15 15:24:52 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 8 WA * 2 RE * 7 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define rep(i, r) for(int i = 0; i < (r); ++i)
#define reps(i, s, r) for(int i = (s); i < (r); ++i)
#define fore(i, m2) for(auto &i : m2)
#define vi vector<int>
#define vl vector<ll>
#define pl pair<ll, ll>
#define all(i) (i).begin(), (i).end()
#define fs first
#define sc second
template <class T> bool chmin(T &i, T b) {
if(i > b) {
i = b;
return true;
}
return false;
}
template <class T> bool chmax(T &a, T b) {
if(a < b) {
a = b;
return true;
}
return false;
}
const ll INF = LONG_LONG_MAX / 3;
const ll MOD = 1'000'000'007;
const ll MAX = 1e3 + 5;
ld IsPrime[MAX];
void solve(int max, ld p) {
IsPrime[0] = 0;
IsPrime[1] = 0;
for(int i = 2; i * 2 <= max; ++i)
for(int j = 2; i * j <= max; ++j)
IsPrime[i * j] = IsPrime[i * j] * (1 - p);
}
int main() {
ll n;
ld p;
cin >> n >> p;
rep(i, n + 1) IsPrime[i] = 1;
solve(n, p);
ld sum = 0;
rep(i, n + 1) sum += IsPrime[i];
cout << sum << endl;
}