結果

問題 No.1514 Squared Matching
ユーザー vjudge1
提出日時 2025-07-07 12:06:21
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
MLE  
実行時間 -
コード長 1,262 bytes
コンパイル時間 2,973 ms
コンパイル使用メモリ 275,056 KB
実行使用メモリ 638,444 KB
最終ジャッジ日時 2025-07-07 12:06:40
合計ジャッジ時間 18,377 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 10 MLE * 16
権限があれば一括ダウンロードができます

ソースコード

diff #

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

#define ll long long
#define endl "\n"
#define pb push_back
#define ff first
#define ss second
#define ii pair<int, int>
#define vi vector<int>
#define vii vector<pair<int, int>>
#define vvi vector<vi>
#define mii map<int, int>
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define _READ(name) freopen(name, "r", stdin)
#define _WRITE(name) freopen(name, "w", stdout)

int n; const int mx = 5e7;
int d[mx+3];
ll mp[mx+3];
bool prime[mx+3];

void Prepare() {
    cin >> n;
}

void ppc() {
	for (int i = 1; i <= mx; i++) {
		prime[i] = 1;
		d[i] = i;
	}
	prime[0] = prime[1] = 0;
	for (int i = 2; i * i <= mx; i++) {
		if (prime[i]) {
			for (int j = i*i; j*j <= mx; j += i) {
				prime[j] = 0;
			}
			for (int j = i*i; j <= mx; j += i*i) {
				while (d[j] % (i*i) == 0) d[j] /= (i*i);
			}
		}
	}
}

void COOOOK() {
	ppc();
	for (int i = 1; i <= n; i++) {
		mp[d[i]]++;
	}
	
	ll ans = 0;
	
	rep(i, 1, n) {
		ans += (mp[i]*mp[i]);
	}
	cout << ans;
}

void Eat() {

}

void Wash() {

}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);

    int TEST = 1;
    while (TEST--) {
        Prepare();
        COOOOK();
        Eat();
        Wash();
    }

    return 0;

}
0