結果

問題 No.3101 Range Eratosthenes Query
ユーザー shobonvip
提出日時 2025-03-18 05:26:17
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 309 ms / 3,000 ms
コード長 781 bytes
コンパイル時間 2,157 ms
コンパイル使用メモリ 206,400 KB
実行使用メモリ 81,100 KB
最終ジャッジ日時 2025-03-18 05:26:29
合計ジャッジ時間 9,911 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 24
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
#include<atcoder/fenwicktree>

const int mx = 1000000;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	vector<int> xp(mx+1);
	vector bc(mx+1, vector<int>(0));
	vector bc_q(mx+1, vector<pair<int,int>>(0));

	for (int i=1; i<=mx; i++) {
		for (int j=2*i; j<=mx; j+=i) {
			xp[j] = i;
		}
	}

	for (int i=1; i<=mx; i++) {
		bc[xp[i]].push_back(i);
	}

	int q; cin >> q;
	for (int i=0; i<q; i++) {
		int l, r; cin >> l >> r;
		bc_q[l].push_back(pair(r, i));
	}

	vector<int> ans(q);
	atcoder::fenwick_tree<int> fw(mx+1);

	for (int i=0; i<=mx; i++) {
		for (auto [r,c]: bc_q[i]) {
			ans[c] = fw.sum(i, r+1);
		}
		for (int j: bc[i]) {
			fw.add(j, +1);
		}
	}

	for (int i=0; i<q; i++) {
		cout << ans[i] << '\n';
	}
}
0