結果
問題 | No.1514 Squared Matching |
ユーザー |
![]() |
提出日時 | 2021-05-21 23:12:13 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 996 bytes |
コンパイル時間 | 6,789 ms |
コンパイル使用メモリ | 257,184 KB |
最終ジャッジ日時 | 2025-01-21 16:38:40 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | MLE * 26 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<int>prime(50000005,true); prime[0] = false; prime[1] = false; for(int i = 2; i <= 50000000; i++) { if(!prime[i]) { continue; } for(int j = i*2; j <= 50000000; j += i) { prime[j] = false; } } vector<int>tmp(50000005); for(int i = 1; i <= 50000000; i++) { tmp[i] = i; } for(int i = 2; i*i <= 50000000; i++) { if(!prime[i]) { continue; } for(int j = i*i; j <= 50000000; j += i*i) { while (tmp[j]%(i*i) == 0) { tmp[j] /= i*i; } } } vector<int>sum(50000005); for(int i = 1; i*i <= 50000000; i++) { sum[i*i]++; } for(int i = 1; i <= 50000000; i++) { sum[i+1] += sum[i]; } int ans = 0; for(int i = 1; i <= N; i++) { ans += sum[N/tmp[i]]; } cout << ans << endl; }