AC 250, tried atcoder virtual contest, wasn't even half bad
This commit is contained in:
66
atcoder/beginner_contests/250/d.cpp
Normal file
66
atcoder/beginner_contests/250/d.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef unsigned long long ull;
|
||||
|
||||
vector<ull> primes(ull maxPrime){
|
||||
vector<bool> p(maxPrime + 1, true);
|
||||
|
||||
for(ull i = 2; i <= sqrt(maxPrime + 1); ++i){
|
||||
if(p[i]){
|
||||
for(ull j = i * 2; j < maxPrime + 1; j += i){
|
||||
p[j] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vector<ull> result;
|
||||
for(ull i = 2; i < maxPrime + 1; ++i){
|
||||
if(p[i]){
|
||||
result.push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
int main(){
|
||||
ios::sync_with_stdio(0);
|
||||
cin.tie(0);
|
||||
|
||||
ull n;
|
||||
cin >> n;
|
||||
|
||||
ull topPrime = ceil(cbrt(ceil(n / 2)));
|
||||
auto ps = primes(topPrime);
|
||||
|
||||
ull result = 0;
|
||||
|
||||
if(ps.size() < 2){
|
||||
cout << result << endl;
|
||||
cout << flush;
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(size_t i = 1; i < ps.size(); ++i){
|
||||
ull q = ps[i];
|
||||
|
||||
for(size_t j = 0; j < i; ++j){
|
||||
ull p = ps[j];
|
||||
ull k = p * q * q * q;
|
||||
|
||||
if(k > n){
|
||||
break;
|
||||
}
|
||||
result++;
|
||||
}
|
||||
}
|
||||
|
||||
cout << result << endl;
|
||||
|
||||
cout << flush;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user