상세 컨텐츠

본문 제목

카테고리 없음

by cr7ronaldo 2021. 7. 30. 23:41

본문

#include <bits/stdc++.h>

using ll = int64_t;
#define begin begin()
#define end end()

#define all(v) v.begin, v.end
#define fir first
#define sec second;
#define FOR3(i, c, n) for(ll i = c; i < n; i++)
#define FOR4(i, c, n) for(ll i = c; i <= n; i++)
#define FOR(i, n) FOR3(i, 0,  n)
#define FOR1(i, n) FOR4(i, 1, n)
#define FOR2(it, vt) for(auto &it : vt)

#define ROR3(i, c, n) for(ll i = c; i > n; i--)
#define ROR4(i, c, n) for(ll i = c; i >= n; i--)
#define ROR1(i, n) ROR3(i, n, 0)
#define ROR2(i, n) ROR4(i, n, 0)

using namespace std;
using vl = vector<ll>;
using vvl = vector<vl>;
using pll = pair<ll, ll>;
using tl3 = tuple<ll, ll, ll>;
using tll = tuple<ll, ll>;
using qll = queue<ll>;
using vp = vector<pll>;
using vvp = vector<vp>;
using qp = queue<pll>;
using pqll = priority_queue<ll>;
using pqp = priority_queue<pll>;
using pqr = priority_queue<ll, vl, greater<ll>>;
using pqpr = priority_queue<pll, vp, greater<pll>>;
template<typename t>
using tpqr = priority_queue<t, vector<t>, greater<t>>;


struct union_find {
vl p;
union_find(int n) {
p.resize(n + 1, 0);
FOR1(i, n) p[i] = i;
}
union_find() : union_find(101010) {}
int get(int x) {
if (x == p[x]) return x;
return p[x] = get(p[x]);
}
void merge(int i, int j) {
i = get(i);
j = get(j);
if (i > j) swap(i, j);
p[j] = i;
}
int is_same(int i, int j) { return get(i) == get(j); }
};
ll gcd(ll a, ll b)
{
if (a < b) swap(a, b);
while (b)
{
ll tmp = a % b;
a = b; b = tmp;
}
return a;
}
tl3 egcd(ll a, ll b)
{
if (b == 0) return { 1, 0, a };
auto r = egcd(b, a % b);
ll x, y, z;
tie(x, y, z) = r;
return { y, x - a / b * y, z };
}
ll my_pow(ll a, ll x, ll mod)
{
ll ret = 1;
while (x)
{
if (x & 1) ret = ret * a % mod;
x >>= 1;
a = a * a % mod;
}
return ret;
}
class comb {
vl fac, inv;
ll mod;
public:
comb(): comb(101010, 1e9 +7) {}
comb(int n, ll mod) : fac(n + 1), inv(n + 1), mod(mod) {
fac[0] = 1; FOR1(i, n) fac[i] = fac[i - 1] * i % mod;
FOR(i, n + 1) inv[i] = my_pow(fac[i], mod - 2, mod);
}
ll operator () (int n, int r) {
if (r > n) return 0;
return fac[n] * inv[r] % mod * inv[n - r] % mod;
}
};

ll coprime_sum(ll n) {
ll ret = n;
ll p = n;
for (ll k = 2; k * k <= p; k++) {
if (n % k) continue;
while (n % k == 0) n /= k;
ret = ret / k * (k - 1);
}
if (n > 1) ret = ret / n * (n - 1);
//cout << n << ": " << ret << '\n';
return ret * p / 2;
}
inline void init_setting() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); }
void solution2();
void solution1() {
int t; cin >> t;
FOR1(i, t)
{
solution2();
cout << '\n';
}
}
int main()
{
init_setting();
solution2();
}

void solution2() {

}