結果
| 問題 |
No.1653 Squarefree
|
| コンテスト | |
| ユーザー |
kai4096_don
|
| 提出日時 | 2021-08-20 22:44:24 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 1,459 ms / 2,000 ms |
| コード長 | 2,300 bytes |
| コンパイル時間 | 1,723 ms |
| コンパイル使用メモリ | 171,416 KB |
| 実行使用メモリ | 75,108 KB |
| 最終ジャッジ日時 | 2024-10-14 08:28:49 |
| 合計ジャッジ時間 | 46,200 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 38 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
//const long nPrime = 1000000007;
//const long nPrime = 998244353;
//n以下の素数列
void LF_Prime_Sequence(const long &n, vector<long> &viPrime){
if(n < 2){
return;
}
viPrime.clear();
vector<char> aiType(n + 1,0);
long iTmp = 2;
while(true){
if(iTmp * iTmp > n){
break;
}
for(long j = iTmp; j * iTmp <= n; j++){
aiType[j * iTmp] = 1;
}
for(long j = iTmp+1; j <= n; j++){
if(aiType[j] == 0){
iTmp = j;
break;
}
}
}
for (long i = 2; i <= n; i++){
if(aiType[i] == 0){
viPrime.push_back(i);
}
}
return;
}
int main() {
vector<long> viPrime;
LF_Prime_Sequence(40000000,viPrime);
long l,r;
cin >> l >> r;
vector<long> viOK(r-l+1,1);
for(long i = 0; viPrime[i] < 1000; i++){
long iTmp = r/(viPrime[i]*viPrime[i]);
iTmp *= (viPrime[i]*viPrime[i]);
iTmp -= l;
for(; iTmp >= 0; iTmp -= (viPrime[i]*viPrime[i])){
viOK[iTmp] = 0;
}
}
for(long i = 0; i < viPrime.size(); i++){
long iTmp = r/(viPrime[i]*viPrime[i]);
iTmp *= (viPrime[i]*viPrime[i]);
iTmp -= l;
if(iTmp >= 0){
viOK[iTmp] = 0;
}
}
for(long i = 0; i < r-l+1; i++){
if(viOK[i] == 0){
continue;
}
long nThis = i+l;
for(long j = 0; viPrime[j] < 1000; j++){
while(nThis % viPrime[j] == 0){
nThis /= viPrime[j];
}
if(nThis < 1e15){
break;
}
}
if(nThis < 1e15){
continue;
}
long nSqrt = long(sqrt(double(nThis)));
if(nSqrt*nSqrt != nThis){
continue;
}
bool bPrime = true;
for(long j = 0; viPrime[j] < 10000; j++){
if(nSqrt%viPrime[j]==0){
bPrime = false;
break;
}
}
if(bPrime){
viOK[i] = 0;
}
}
long nAns = 0;
for(long i = 0; i < r-l+1; i++){
nAns += viOK[i];
}
cout << nAns << endl;
return 0;
}
kai4096_don