Together Square
問題
D – Together Square
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/6/4 リアルタイム参加 解法わからず。
解法
- あとで書く。
- 反省記録はこちら
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 62; // const int INF = 1001001001; map<int, int> prime_factor(int N) { map<int, int> res; for(int i = 2; i * i <= N; i++) { while(N % i == 0) { res[i]++; N /= i; } } if(N != 1) { res[N] = 1; } return res; } int main() { int N; cin >> N; vector<int> cnt(N+1); for(int i = 1; i <= N; ++i) { map<int, int> mp = prime_factor(i); int res = 1; for(auto j:mp) { int k = j.first * (j.second % 2); if (k != 0) { res *= k; } } cnt[res]++; } int ans = 0; for(int i = 1; i <= N; ++i) { ans += cnt[i] * cnt[i]; } cout << ans << endl; return 0; }