結果
問題 | No.1653 Squarefree |
ユーザー |
![]() |
提出日時 | 2021-08-20 22:14:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 271 ms / 2,000 ms |
コード長 | 968 bytes |
コンパイル時間 | 1,054 ms |
コンパイル使用メモリ | 84,708 KB |
最終ジャッジ日時 | 2025-01-23 23:37:13 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
#include <iostream>#include <vector>#include <cmath>using namespace std;typedef long long ll;ll p[1000010];int main(){ll i,j,l,r; cin >> l >> r;vector<ll> v;for(i=l;i<=r;i++) v.push_back(i); //v[i] = l + ifor(i=2;i<=1000000;i++){ll ll = (l + i - 1)/i*i; //ll,ll + i,ll + 2*i...for(j=ll;j<=r;j+=i){if(v[j - l]!=0 && v[j - l]%i==0){int cnt = 0;while(v[j - l]%i==0){//cout << v[j - l] << " " << i << endl;v[j - l] /= i; cnt++;}if(cnt>=2) v[j - l] = 0;}}}/*for(i=l;i<=r;i++) cout << i << " ";cout << endl;for(ll x:v) cout << x << " ";cout << endl;*/int cnt = v.size();for(ll x:v){if(x==1) continue;if(x==0) cnt--;else{ll y = sqrt(x);if(x==y*y) cnt--;}}cout << cnt << endl;}