From 4bf06f22acb230328b87baf6cfaebe0f6228be9a Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Mon, 22 Jan 2024 14:17:39 +0900 Subject: [PATCH 01/34] commit and sloved 01/22 --- BOJ_20040.cpp | 46 +++++++++++++++++++++++++++++ BOJ_4386.cpp | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 BOJ_20040.cpp create mode 100644 BOJ_4386.cpp diff --git a/BOJ_20040.cpp b/BOJ_20040.cpp new file mode 100644 index 0000000..5bd6920 --- /dev/null +++ b/BOJ_20040.cpp @@ -0,0 +1,46 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int P[505050]; + +void Init(int n) { + for (int i = 0; i < n; i++)P[i] = i; +} + +int Find(int v) { + if (v == P[v])return v; + return P[v] = Find(P[v]); +} + +bool Union(int u, int v) { + u = Find(u); + v = Find(v); + if (u == v) + return true; + if (u != v)P[u] = v; + return false; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, m; + bool flag = false; + cin >> n >> m; + Init(n); + for (int i = 0; i < m; i++) { + int a, b; + cin >> a >> b; + flag = Union(a, b); + if (flag) { + cout << i + 1 << '\n'; + return 0; + } + } + cout << 0 << '\n'; +} diff --git a/BOJ_4386.cpp b/BOJ_4386.cpp new file mode 100644 index 0000000..e23177d --- /dev/null +++ b/BOJ_4386.cpp @@ -0,0 +1,81 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int n; +int P[101]; +vector > vp; +vector > E; + +int Find(int v) { + if (v == P[v])return v; + return P[v] = Find(P[v]); +} + +void Union(int u, int v) { + u = Find(u); + v = Find(v); + + if (u < v)P[v] = u; + else P[u] = v; +} + +bool isCycle(int u, int v) { + u = Find(u); + v = Find(v); + + if (u == v) { + return true; + } + return false; +} + + +double Kruskal() { + double ret = 0; + + sort(E.begin(), E.end()); + for (auto [w,u,v]: E) { + if (isCycle(u, v)) continue; + ret += w; + Union(u, v); + + // cout << ret << " "; + } + + return ret; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + double ans = 0; + int n; + cin >> n; + for (int i = 0; i < n; i++) { + double x, y; + cin >> x >> y; + vp.push_back({x, y}); + } + for (int i = 0; i < n; i++) { + double x1 = vp[i].first; + double y1 = vp[i].second; + for (int j = i + 1; j < n; j++) { + double x2 = vp[j].first; + double y2 = vp[j].second; + + double dist = sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2)); + E.push_back({dist, i + 1, j + 1}); + // cout << dist << " " << i+1 << " " << j+1 << "\n"; + } + } + for (int i = 1; i <= n; i++)P[i] = i; + ans = Kruskal(); + cout << fixed; + cout.precision(2); + cout << ans << '\n'; +} From 36e57e7747a9b2c57ac47ac0340337ce268f495d Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Tue, 23 Jan 2024 23:44:24 +0900 Subject: [PATCH 02/34] commit and sloved 01/23 --- BOJ_2230.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 BOJ_2230.cpp diff --git a/BOJ_2230.cpp b/BOJ_2230.cpp new file mode 100644 index 0000000..5cdc140 --- /dev/null +++ b/BOJ_2230.cpp @@ -0,0 +1,33 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int A[101010]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, m; + cin >> n >> m; + for (int i = 0; i < n; i++) + cin >> A[i]; + sort(A, A + n); + int l = 0, r = 1, ans = 1000000000; + while (l < n) { + if (A[r] - A[l] < m) { + r++; + + } + if (A[r] -A[l]==m) { + cout << m; + return 0; + } + ans = min(ans, A[r] - A[l]); + l++; + } + cout << ans; +} From 5413f0f94d0fd2dcb41571f25ec4c0f7306a4f04 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Wed, 24 Jan 2024 14:51:53 +0900 Subject: [PATCH 03/34] commit and sloved 01/24 --- BOJ_17404.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 BOJ_17404.cpp diff --git a/BOJ_17404.cpp b/BOJ_17404.cpp new file mode 100644 index 0000000..4aca606 --- /dev/null +++ b/BOJ_17404.cpp @@ -0,0 +1,47 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int home[1010][3]; +int dp[1010][3]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + int ans = 1e9; + + for (int i = 0; i < n; i++) { + cin >> home[i][0] >> home[i][1] >> home[i][2]; + } + + for (int c = 0; c < 3; c++) { + for (int j = 0; j < 3; j++) { + if (j == c) + dp[0][j] = home[0][j]; + else + dp[0][j] = 1e9; + } + for (int i = 1; i < n; i++) { + dp[i][0] = home[i][0] + min(dp[i - 1][1], dp[i - 1][2]); + dp[i][1] = home[i][1] + min(dp[i - 1][0], dp[i - 1][2]); + dp[i][2] = home[i][2] + min(dp[i - 1][1], dp[i - 1][0]); + } + for (int k = 0; k < 3; k++) { + if (c == k)continue; + ans = min(ans, dp[n - 1][k]); + } + } + // for (int i = 0; i < n; i++) { + // for (int j = 0; j <= 2; j++) { + // cout << dp[i][j] << " "; + // } + // cout << '\n'; + // } + cout << ans; +} From c2f56a8ec2d76cdd189c0693311535b7975f279c Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 25 Jan 2024 21:20:42 +0900 Subject: [PATCH 04/34] commit and sloved 01/25 --- BOJ_1644.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ BOJ_2230.cpp | 16 ++++++---------- 2 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 BOJ_1644.cpp diff --git a/BOJ_1644.cpp b/BOJ_1644.cpp new file mode 100644 index 0000000..d6d6bd0 --- /dev/null +++ b/BOJ_1644.cpp @@ -0,0 +1,44 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int Check[4040404]; +vector Primes; +int cnt[4040404]; + +void Sieve() { + for (int i = 2; i <= 4000000; i++) { + if (Check[i])continue; + Primes.push_back(i); + for (int j = i + i; j <= 4000000; j += i) + Check[j] = 1; + } +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + Sieve(); + // for (auto &i: Primes) { + // cout << i << '\n'; + // } + for (int i = 0; i < Primes.size(); i++) { + int sum = 0; + for (int j = i; j < Primes.size(); j++) { + sum += Primes[j]; + + if (sum > 4000000) { + break; + } else { + cnt[sum]++; + } + } + } + cout << cnt[n] << '\n'; +} diff --git a/BOJ_2230.cpp b/BOJ_2230.cpp index 5cdc140..d7b08ac 100644 --- a/BOJ_2230.cpp +++ b/BOJ_2230.cpp @@ -16,18 +16,14 @@ int main() { for (int i = 0; i < n; i++) cin >> A[i]; sort(A, A + n); - int l = 0, r = 1, ans = 1000000000; + int l = 0, r = 0, ans = 2e9; while (l < n) { - if (A[r] - A[l] < m) { - r++; + int diff = A[r] - A[l]; - } - if (A[r] -A[l]==m) { - cout << m; - return 0; - } - ans = min(ans, A[r] - A[l]); - l++; + if (diff >= m) + ans = min(ans, diff); + if (r > n || diff > m)l++; + else r++; } cout << ans; } From 3720369076bbf2169e7bd5091def6a3003aad178 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Fri, 26 Jan 2024 13:22:40 +0900 Subject: [PATCH 05/34] commit and sloved 01/26 --- BOJ_1647.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ BOJ_1987.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 BOJ_1647.cpp create mode 100644 BOJ_1987.cpp diff --git a/BOJ_1647.cpp b/BOJ_1647.cpp new file mode 100644 index 0000000..c4ddbf9 --- /dev/null +++ b/BOJ_1647.cpp @@ -0,0 +1,43 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +int P[101010]; +int n, m, mx = 0; +vector > E; + +int Find(int v) { + return v == P[v] ? v : P[v] = Find(P[v]); +} + +bool Union(int u, int v) { + return Find(u) != Find(v) && (P[P[u]] = P[v], true); +} + +int Kruskal() { + int ret = 0; + for (int i = 1; i <= n; i++)P[i] = i; + sort(E.begin(), E.end()); + for (auto [w,u,v]: E) + if (Union(u, v)) { + ret += w; + mx = max(mx, w); + } + return ret; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + + cin >> n >> m; + for (int i = 0; i < m; i++) { + int a, b, c; + cin >> a >> b >> c; + E.push_back({c, a, b}); + } + cout << Kruskal() - mx; +} diff --git a/BOJ_1987.cpp b/BOJ_1987.cpp new file mode 100644 index 0000000..1201c18 --- /dev/null +++ b/BOJ_1987.cpp @@ -0,0 +1,43 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +bool alpha[26]; // 아스키코드 A: 65 ~ Z: 90 +char table[22][22]; +int dx[4] = {0, 1, 0, -1}; +int dy[4] = {1, 0, -1, 0}; +int r, c, cnt; +int ans = 0; + +void DFS(int x, int y, int cnt) { + for (int i = 0; i < 4; i++) { + int nx = x + dx[i]; + int ny = y + dy[i]; + if (nx >= r || ny >= c || nx < 0 || ny < 0)continue; + + if (!alpha[table[nx][ny] - 'A']) { + alpha[table[nx][ny] - 'A'] = true; + DFS(nx, ny, cnt + 1); + alpha[table[nx][ny] - 'A'] = false; + } + } + ans = max(ans, cnt); +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> r >> c; + for (int i = 0; i < r; i++) { + for (int j = 0; j < c; j++) { + cin >> table[i][j]; + } + } + alpha[table[0][0] - 'A'] = true; + DFS(0, 0, 1); + cout << ans; +} From ca3aa81fc3141ad08d370431aecec5945177b90b Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Sat, 27 Jan 2024 18:07:18 +0900 Subject: [PATCH 06/34] commit and sloved 01/27 --- BOJ_1043.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 BOJ_1043.cpp diff --git a/BOJ_1043.cpp b/BOJ_1043.cpp new file mode 100644 index 0000000..fd9eebd --- /dev/null +++ b/BOJ_1043.cpp @@ -0,0 +1,52 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +vector pp[51], party[51], tp; +bool visited[51]; + +void dfs(int n) { + visited[n] = true; + for (auto ptn: pp[n]) { + for (auto p: party[ptn]) { + if (!visited[p]) dfs(p); + } + } +} + +int main() { + int N, M; + cin >> N >> M; + int t, v; + cin >> t; + for (int i = 0; i < t; i++) { + cin >> v; + tp.push_back(v); + } + for (int i = 1; i <= M; i++) { + cin >> t; + for (int j = 0; j < t; j++) { + cin >> v; + party[i].push_back(v); + pp[v].push_back(i); + } + } + + for (auto a: tp) dfs(a); + int ans = 0; + for (int i = 1; i <= M; i++) { + bool flag = true; + for (auto p: party[i]) { + if (visited[p]) { + flag = 0; + break; + } + } + if (flag) ans++; + } + cout << ans; +} From 05de5d7b328922e7fd9940aeca66ce360bfff405 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Sun, 28 Jan 2024 17:09:03 +0900 Subject: [PATCH 07/34] commit and sloved 01/28 --- BOJ_1504.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 BOJ_1504.cpp diff --git a/BOJ_1504.cpp b/BOJ_1504.cpp new file mode 100644 index 0000000..2727673 --- /dev/null +++ b/BOJ_1504.cpp @@ -0,0 +1,62 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const int INF = 987654321; +using namespace std; + + +vector vp[808]; +int dist[808]; + +int n, e, v1, v2; + +int Dijkstra(int st, int ed) { + for (int i = 1; i <= n; i++)dist[i] = INF; + priority_queue, greater<> > pq; + dist[st] = 0; + pq.push({0, st}); + while (!pq.empty()) { + auto [c,v] = pq.top(); + pq.pop(); + for (auto [i,w]: vp[v]) { + if (dist[i] > dist[v] + w) { + dist[i] = dist[v] + w; + + pq.push({dist[i], i}); + } + } + } + return dist[ed]; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + + cin >> n >> e; + for (int i = 0; i < e; i++) { + int a, b, c; + cin >> a >> b >> c; + vp[a].push_back({b, c}); + vp[b].push_back({a, c}); + } + + cin >> v1 >> v2; + + int a1 = Dijkstra(1, v1), a2 = Dijkstra(v1, v2), a3 = Dijkstra(v2, n); + int ans1 = 0; + if (a1 == INF || a2 == INF || a3 == INF)ans1 = INF; + else ans1 = a1 + a2 + a3; + + int b1 = Dijkstra(1, v2), b2 = Dijkstra(v2, v1), b3 = Dijkstra(v1, n); + int ans2 = 0; + if (b1 == INF || b2 == INF || b3 == INF)ans2 = INF; + else ans2 = b1 + b2 + b3; + + if (ans1 == INF || ans2 == INF) + cout << -1; + else + cout << min(ans1, ans2); +} From 60e841c0846225634d0c5544820d27534a572e20 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Mon, 29 Jan 2024 14:20:25 +0900 Subject: [PATCH 08/34] commit and sloved 01/29 --- BOJ_1202.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 BOJ_1202.cpp diff --git a/BOJ_1202.cpp b/BOJ_1202.cpp new file mode 100644 index 0000000..1b373f5 --- /dev/null +++ b/BOJ_1202.cpp @@ -0,0 +1,47 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int Bag[303030]; +priority_queue pq; +vector jew; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, k; + cin >> n >> k; + + for (int i = 0; i < n; i++) { + int m, v; + cin >> m >> v; + jew.push_back({m, v}); + } + sort(jew.begin(), jew.end()); + + for (int i = 0; i < k; i++) { + cin >> Bag[i]; + } + sort(Bag, Bag + k); + int idx = 0; + ll ans = 0; + for (int i = 0; i < k; i++) { + while (jew[idx].first <= Bag[i] && idx < n) { + // cout << jew[idx].second << " "; + pq.push(jew[idx].second); + idx++; + } + + // cout << pq.top() << " "; + if (!pq.empty()) { + // cout << pq.top() << " "; + ans += pq.top(); + pq.pop(); + } + } + cout << ans; +} From 04c6df24eebc08111a07202738d34aa38cf205bc Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Mon, 29 Jan 2024 14:21:46 +0900 Subject: [PATCH 09/34] commit and sloved 01/29 --- BOJ_1202.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/BOJ_1202.cpp b/BOJ_1202.cpp index 1b373f5..2ef1428 100644 --- a/BOJ_1202.cpp +++ b/BOJ_1202.cpp @@ -36,9 +36,8 @@ int main() { idx++; } - // cout << pq.top() << " "; + if (!pq.empty()) { - // cout << pq.top() << " "; ans += pq.top(); pq.pop(); } From f1bf87e73842360638b373c8947ee5ea08b70c35 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Tue, 30 Jan 2024 17:39:46 +0900 Subject: [PATCH 10/34] commit and sloved 01/30 --- BOJ_11442.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ BOJ_2740.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ BOJ_2749.cpp | 24 ++++++++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 BOJ_11442.cpp create mode 100644 BOJ_2740.cpp create mode 100644 BOJ_2749.cpp diff --git a/BOJ_11442.cpp b/BOJ_11442.cpp new file mode 100644 index 0000000..f71de68 --- /dev/null +++ b/BOJ_11442.cpp @@ -0,0 +1,48 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; +const long long mod = 1000000007LL; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += a[i][k] * b[k][j]; + } + c[i][j] %= mod; + } + } + return c; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + long long n; + cin >> n; + if (n % 2)n++; + if (n <= 1) { + cout << n << '\n'; + return 0; + } + + matrix ans = {{1, 0}, {0, 1}}; + matrix a = {{1, 1}, {1, 0}}; + + while (n > 0) { + if (n % 2 == 1) { + ans = ans * a; + } + a = a * a; + n /= 2; + } + + cout << ans[0][1] << '\n'; +} diff --git a/BOJ_2740.cpp b/BOJ_2740.cpp new file mode 100644 index 0000000..476298b --- /dev/null +++ b/BOJ_2740.cpp @@ -0,0 +1,48 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int matrixA[101][101]; +int matrixB[101][101]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + + int n, m, k; + cin >> n >> m; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + int num; + cin >> num; + matrixA[i][j] = num; + } + } + cin >> m >> k; + for (int i = 0; i < m; i++) { + for (int j = 0; j < k; j++) { + int num; + cin >> num; + matrixB[i][j] = num; + } + } + vector > C(n, vector(k)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < k; j++) { + for (int q = 0; q < m; q++) { + C[i][j] += matrixA[i][q] * matrixB[q][j]; + // cout << C[i][j] << " "; + } + } + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < k; j++) { + cout << C[i][j] << " "; + } + cout << '\n'; + } +} diff --git a/BOJ_2749.cpp b/BOJ_2749.cpp new file mode 100644 index 0000000..7e20912 --- /dev/null +++ b/BOJ_2749.cpp @@ -0,0 +1,24 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000 + +const ll INF = 10e12 + 10; +using namespace std; + +int F[MOD / 10 * 15]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int P = MOD / 10 * 15; + ll n; + cin >> n; + F[1] = 1; + for (int i = 2; i < P; i++) { + F[i] = F[i - 1] + F[i - 2]; + F[i] %= MOD; + } + cout << F[n % P]; +} From 2856f9629b9be14b19488f5102397d75e0b80b51 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 1 Feb 2024 11:16:22 +0900 Subject: [PATCH 11/34] commit and sloved 02/01 --- BOJ_11443.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ BOJ_11689.cpp | 23 +++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 BOJ_11443.cpp create mode 100644 BOJ_11689.cpp diff --git a/BOJ_11443.cpp b/BOJ_11443.cpp new file mode 100644 index 0000000..62e8542 --- /dev/null +++ b/BOJ_11443.cpp @@ -0,0 +1,50 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; +const long long mod = 1000000007LL; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += a[i][k] * b[k][j]; + } + c[i][j] %= mod; + } + } + return c; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + long long n; + cin >> n; + if (n % 2 == 0)n++; + + if (n == 1) { + cout << 0 << '\n'; + return 0; + } + + + matrix ans = {{1, 0}, {0, 1}}; + matrix a = {{1, 1}, {1, 0}}; + + while (n > 0) { + if (n % 2 == 1) { + ans = ans * a; + } + a = a * a; + n /= 2; + } + + cout << ans[0][1] - 1 << '\n'; +} diff --git a/BOJ_11689.cpp b/BOJ_11689.cpp new file mode 100644 index 0000000..b4d40f3 --- /dev/null +++ b/BOJ_11689.cpp @@ -0,0 +1,23 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + ll n; + cin >> n; + ll ans = n; + for (ll k = 2; k <= sqrt(n); k++) { + if (n % k == 0) { + ans = ans - ans / k; + while (n % k == 0)n /= k; + } + } + if (n > 1)ans -= ans / n; + cout << ans; +} From 56d402858cf5fc882ecc24e3dea07470c090c707 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Fri, 2 Feb 2024 18:03:49 +0900 Subject: [PATCH 12/34] commit and sloved 02/02 --- BOJ_11440.cpp | 50 +++++++++++++++++++++++++++++++++++++++++ BOJ_2086.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 BOJ_11440.cpp create mode 100644 BOJ_2086.cpp diff --git a/BOJ_11440.cpp b/BOJ_11440.cpp new file mode 100644 index 0000000..41c7e52 --- /dev/null +++ b/BOJ_11440.cpp @@ -0,0 +1,50 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; +const long long mod = 1000000007LL; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += a[i][k] * b[k][j]; + } + c[i][j] %= mod; + } + } + return c; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + long long n; + cin >> n; + + + if (n == 1) { + cout << 1 << '\n'; + return 0; + } + + + matrix ans = {{1, 0}, {0, 1}}; + matrix a = {{1, 1}, {1, 0}}; + + while (n > 0) { + if (n % 2 == 1) { + ans = ans * a; + } + a = a * a; + n /= 2; + } + + cout << (ans[0][1] * ans[0][0]) % mod << '\n'; +} diff --git a/BOJ_2086.cpp b/BOJ_2086.cpp new file mode 100644 index 0000000..cc9982f --- /dev/null +++ b/BOJ_2086.cpp @@ -0,0 +1,62 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; +const long long mod = 1'000'000'000; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n, 0)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += (a[i][k] * b[k][j]) % mod; + c[i][j] %= mod; + } + } + } + return c; +} + +matrix A2 = {{1, 0}, {0, 1}}; +matrix A = {{1, 1}, {1, 0}}; +matrix B2 = {{1, 0}, {0, 1}}; +matrix B = {{1, 1}, {1, 0}}; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + long long a, b; + cin >> a >> b; + bool flag = false; + if (a == b) { + flag = true; + a--; + } + + b += 2; + a += 1; + while (a > 0) { + if (a % 2 == 1) { + A2 = A2 * A; + } + A = A * A; + a /= 2; + } + while (b > 0) { + if (b % 2 == 1) { + B2 = B2 * B; + } + B = B * B; + b /= 2; + } + if (flag) { + cout << A2[0][1] << '\n'; + } else { + cout << ((B2[0][1] - A2[0][1] + mod) % mod) << '\n'; + } +} From 8dd550b34c9cd12595fe83d369a2250c2b4b27ed Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Sat, 3 Feb 2024 16:23:30 +0900 Subject: [PATCH 13/34] commit and sloved 02/03 --- BOJ_11778.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ BOJ_4355.cpp | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 BOJ_11778.cpp create mode 100644 BOJ_4355.cpp diff --git a/BOJ_11778.cpp b/BOJ_11778.cpp new file mode 100644 index 0000000..d00e7d6 --- /dev/null +++ b/BOJ_11778.cpp @@ -0,0 +1,47 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; +const long long mod = 1000000007LL; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += a[i][k] * b[k][j]; + } + c[i][j] %= mod; + } + } + return c; +} + +ll gcd(ll a, ll b) { + return b ? gcd(b, a % b) : a; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + long long n, m; + cin >> n >> m; + ll t = gcd(n, m); + matrix ans = {{1, 0}, {0, 1}}; + matrix a = {{1, 1}, {1, 0}}; + + while (t > 0) { + if (t % 2 == 1) { + ans = ans * a; + } + a = a * a; + t /= 2; + } + + cout << ans[0][1] << '\n'; +} diff --git a/BOJ_4355.cpp b/BOJ_4355.cpp new file mode 100644 index 0000000..126fbb2 --- /dev/null +++ b/BOJ_4355.cpp @@ -0,0 +1,36 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + ll n = 1; + bool flag; + while (n != 0) { + cin >> n; + flag = false; + if (n == 0) { + return 0; + } + if (n == 1) + flag = true; + + ll ans = n; + for (ll k = 2; k <= sqrt(n); k++) { + if (n % k == 0) { + ans = ans - ans / k; + while (n % k == 0)n /= k; + } + } + if (n > 1)ans -= ans / n; + if(flag) { + cout << 0 << '\n'; + }else + cout << ans << '\n'; + } +} From 409f030aec76270069a2e710d7eda5b83bdd4c72 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Sun, 4 Feb 2024 14:49:22 +0900 Subject: [PATCH 14/34] commit and sloved 02/04 --- BOJ_19577.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ BOJ_23832.cpp | 30 ++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 BOJ_19577.cpp create mode 100644 BOJ_23832.cpp diff --git a/BOJ_19577.cpp b/BOJ_19577.cpp new file mode 100644 index 0000000..0eb2e2f --- /dev/null +++ b/BOJ_19577.cpp @@ -0,0 +1,58 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +vector v; + +void measure(int n) { + for (int i = 1; i * i <= n; i++) { + if (n % i == 0) { + v.push_back(i); + if (n / i != i)v.push_back(n / i); + } + } +} + +int phi(int n) { + int ans = n; + for (int k = 2; k <= sqrt(n); k++) { + if (n % k == 0) { + ans -= ans / k; + while (n % k == 0) n /= k; + } + } + if (n > 1)ans -= ans / n; + return ans; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + if (n == 1) { + cout << 1; + return 0; + } + if (n % 2) { + cout << -1; + } else { + measure(n); + sort(v.begin(), v.end()); + // for (auto iter: v) { + // cout << iter << " "; + // } + + for (auto x: v) { + if (x * phi(x) == n) { + cout << x; + return 0; + } + } + cout << -1; + } +} diff --git a/BOJ_23832.cpp b/BOJ_23832.cpp new file mode 100644 index 0000000..a3b5f58 --- /dev/null +++ b/BOJ_23832.cpp @@ -0,0 +1,30 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int phi(int n) { + int ans = n; + for (int k = 2; k <= sqrt(n); k++) { + if (n % k == 0) { + ans -= ans / k; + while (n % k == 0) n /= k; + } + } + if (n > 1)ans -= ans / n; + return ans; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, sum = 0; + cin >> n; + for (int i = 2; i <= n; i++) { + sum += phi(i); + } + cout << sum << '\n'; +} From b84d2fdb6960ca6b6ce90b53a19f74434f823fcc Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Mon, 5 Feb 2024 11:37:11 +0900 Subject: [PATCH 15/34] commit and sloved 02/05 --- BOJ_13646.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 BOJ_13646.cpp diff --git a/BOJ_13646.cpp b/BOJ_13646.cpp new file mode 100644 index 0000000..a7535b9 --- /dev/null +++ b/BOJ_13646.cpp @@ -0,0 +1,32 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int phi(int n) { + int ans = n; + for (int k = 2; k <= sqrt(n); k++) { + if (n % k == 0) { + ans -= ans / k; + while (n % k == 0) n /= k; + } + } + if (n > 1)ans -= ans / n; + return ans; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n=1; + + while(n!=2147483647){ + cin >> n; + cout << phi(n)/2 << '\n'; + } + + +} From e6889633517e96e54ed5c5dce0ae6e450a53b4f1 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Tue, 6 Feb 2024 22:20:57 +0900 Subject: [PATCH 16/34] commit and sloved 02/06 --- BOJ_1043.cpp | 52 --------------------------------- BOJ_11440.cpp | 50 ------------------------------- BOJ_11442.cpp | 48 ------------------------------ BOJ_11443.cpp | 50 ------------------------------- BOJ_11444.cpp | 28 ------------------ BOJ_1153.cpp | 46 ----------------------------- BOJ_11687.cpp | 36 ----------------------- BOJ_11689.cpp | 23 --------------- BOJ_11778.cpp | 47 ------------------------------ BOJ_1202.cpp | 46 ----------------------------- BOJ_13646.cpp | 32 -------------------- BOJ_1377.cpp | 28 ++++++++++++++++++ BOJ_1504.cpp | 62 --------------------------------------- BOJ_16395.cpp | 25 ---------------- BOJ_1644.cpp | 44 ---------------------------- BOJ_1647.cpp | 43 --------------------------- BOJ_16724.cpp | 41 -------------------------- BOJ_17127.cpp | 43 --------------------------- BOJ_17404.cpp | 47 ------------------------------ BOJ_1918.cpp | 49 ------------------------------- BOJ_19577.cpp | 58 ------------------------------------ BOJ_1987.cpp | 43 --------------------------- BOJ_20040.cpp | 46 ----------------------------- BOJ_2086.cpp | 62 --------------------------------------- BOJ_2230.cpp | 29 ------------------ BOJ_23832.cpp | 30 ------------------- BOJ_27172.cpp | 35 ---------------------- BOJ_2740.cpp | 48 ------------------------------ BOJ_2749.cpp | 24 --------------- BOJ_4355.cpp | 36 ----------------------- BOJ_4386.cpp | 81 --------------------------------------------------- BOJ_9663.cpp | 39 ------------------------- 32 files changed, 28 insertions(+), 1343 deletions(-) delete mode 100644 BOJ_1043.cpp delete mode 100644 BOJ_11440.cpp delete mode 100644 BOJ_11442.cpp delete mode 100644 BOJ_11443.cpp delete mode 100644 BOJ_11444.cpp delete mode 100644 BOJ_1153.cpp delete mode 100644 BOJ_11687.cpp delete mode 100644 BOJ_11689.cpp delete mode 100644 BOJ_11778.cpp delete mode 100644 BOJ_1202.cpp delete mode 100644 BOJ_13646.cpp create mode 100644 BOJ_1377.cpp delete mode 100644 BOJ_1504.cpp delete mode 100644 BOJ_16395.cpp delete mode 100644 BOJ_1644.cpp delete mode 100644 BOJ_1647.cpp delete mode 100644 BOJ_16724.cpp delete mode 100644 BOJ_17127.cpp delete mode 100644 BOJ_17404.cpp delete mode 100644 BOJ_1918.cpp delete mode 100644 BOJ_19577.cpp delete mode 100644 BOJ_1987.cpp delete mode 100644 BOJ_20040.cpp delete mode 100644 BOJ_2086.cpp delete mode 100644 BOJ_2230.cpp delete mode 100644 BOJ_23832.cpp delete mode 100644 BOJ_27172.cpp delete mode 100644 BOJ_2740.cpp delete mode 100644 BOJ_2749.cpp delete mode 100644 BOJ_4355.cpp delete mode 100644 BOJ_4386.cpp delete mode 100644 BOJ_9663.cpp diff --git a/BOJ_1043.cpp b/BOJ_1043.cpp deleted file mode 100644 index fd9eebd..0000000 --- a/BOJ_1043.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -vector pp[51], party[51], tp; -bool visited[51]; - -void dfs(int n) { - visited[n] = true; - for (auto ptn: pp[n]) { - for (auto p: party[ptn]) { - if (!visited[p]) dfs(p); - } - } -} - -int main() { - int N, M; - cin >> N >> M; - int t, v; - cin >> t; - for (int i = 0; i < t; i++) { - cin >> v; - tp.push_back(v); - } - for (int i = 1; i <= M; i++) { - cin >> t; - for (int j = 0; j < t; j++) { - cin >> v; - party[i].push_back(v); - pp[v].push_back(i); - } - } - - for (auto a: tp) dfs(a); - int ans = 0; - for (int i = 1; i <= M; i++) { - bool flag = true; - for (auto p: party[i]) { - if (visited[p]) { - flag = 0; - break; - } - } - if (flag) ans++; - } - cout << ans; -} diff --git a/BOJ_11440.cpp b/BOJ_11440.cpp deleted file mode 100644 index 41c7e52..0000000 --- a/BOJ_11440.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -typedef vector > matrix; -const long long mod = 1000000007LL; - -matrix operator *(const matrix &a, const matrix &b) { - int n = a.size(); - matrix c(n, vector(n)); - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - for (int k = 0; k < n; k++) { - c[i][j] += a[i][k] * b[k][j]; - } - c[i][j] %= mod; - } - } - return c; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - long long n; - cin >> n; - - - if (n == 1) { - cout << 1 << '\n'; - return 0; - } - - - matrix ans = {{1, 0}, {0, 1}}; - matrix a = {{1, 1}, {1, 0}}; - - while (n > 0) { - if (n % 2 == 1) { - ans = ans * a; - } - a = a * a; - n /= 2; - } - - cout << (ans[0][1] * ans[0][0]) % mod << '\n'; -} diff --git a/BOJ_11442.cpp b/BOJ_11442.cpp deleted file mode 100644 index f71de68..0000000 --- a/BOJ_11442.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -typedef vector > matrix; -const long long mod = 1000000007LL; - -matrix operator *(const matrix &a, const matrix &b) { - int n = a.size(); - matrix c(n, vector(n)); - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - for (int k = 0; k < n; k++) { - c[i][j] += a[i][k] * b[k][j]; - } - c[i][j] %= mod; - } - } - return c; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - long long n; - cin >> n; - if (n % 2)n++; - if (n <= 1) { - cout << n << '\n'; - return 0; - } - - matrix ans = {{1, 0}, {0, 1}}; - matrix a = {{1, 1}, {1, 0}}; - - while (n > 0) { - if (n % 2 == 1) { - ans = ans * a; - } - a = a * a; - n /= 2; - } - - cout << ans[0][1] << '\n'; -} diff --git a/BOJ_11443.cpp b/BOJ_11443.cpp deleted file mode 100644 index 62e8542..0000000 --- a/BOJ_11443.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -typedef vector > matrix; -const long long mod = 1000000007LL; - -matrix operator *(const matrix &a, const matrix &b) { - int n = a.size(); - matrix c(n, vector(n)); - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - for (int k = 0; k < n; k++) { - c[i][j] += a[i][k] * b[k][j]; - } - c[i][j] %= mod; - } - } - return c; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - long long n; - cin >> n; - if (n % 2 == 0)n++; - - if (n == 1) { - cout << 0 << '\n'; - return 0; - } - - - matrix ans = {{1, 0}, {0, 1}}; - matrix a = {{1, 1}, {1, 0}}; - - while (n > 0) { - if (n % 2 == 1) { - ans = ans * a; - } - a = a * a; - n /= 2; - } - - cout << ans[0][1] - 1 << '\n'; -} diff --git a/BOJ_11444.cpp b/BOJ_11444.cpp deleted file mode 100644 index 33e6454..0000000 --- a/BOJ_11444.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000007 -const ll INF = 10e12 + 10; -using namespace std; - -map mp; -ll fibo(ll x) { - if (mp[x])return mp[x]; - ll res; - if (x % 2) - res = ((fibo((x + 1) / 2) * fibo((x + 1) / 2)) % MOD) + ( - (fibo((x - 1) / 2) * fibo((x - 1) / 2)) % MOD) % MOD; - else res = (fibo(x / 2) * (fibo(x / 2 + 1) + fibo(x / 2 - 1))) % MOD; - - return mp[x] = res % MOD; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - ll n; - cin >> n; - mp[0] = 0, mp[1] = 1, mp[2] = 1; - cout << fibo(n); -} diff --git a/BOJ_1153.cpp b/BOJ_1153.cpp deleted file mode 100644 index 0e11bea..0000000 --- a/BOJ_1153.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -int Prime[1010101]; - -int IsPrime(int n) { - if (n == 2)return 1; - if (n <= 1 || n % 2 == 0)return 0; - for (int i = 3; i * i <= n; i += 2) { - if (n % i == 0)return 0; - } - return 1; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n; - cin >> n; - if (n < 8) { - cout << "-1" << '\n'; - return 0; - } - for (int i = 2; i * i <= n; i++) { - if (Prime[i])continue; - for (int j = i * i; j <= n; j += i) - Prime[j] = 1; - } - if (n % 2) { - n -= 5; - cout << "2 3 "; - } else { - n -= 4; - cout << "2 2 "; - } - for (int i = 2; i <= n; i++) { - if (!Prime[i] && !Prime[n - i]) { - cout << i << " " << n - i; - return 0; - } - } -} diff --git a/BOJ_11687.cpp b/BOJ_11687.cpp deleted file mode 100644 index 87d63f9..0000000 --- a/BOJ_11687.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -int bSearch(int m) { - int cnt = 0; - while (m) { - cnt += m / 5; - m /= 5; - } - return cnt; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int m; - cin >> m; - int l = 0, r = 5e9 + 1, ans; - while (l + 1 < r) { - int mid = (l + r) / 2; - - if (bSearch(mid) < m) { - l = mid; - } else { - r = mid; - } - } - - cout << (bSearch(r) == m ? r : -1) << '\n'; -} diff --git a/BOJ_11689.cpp b/BOJ_11689.cpp deleted file mode 100644 index b4d40f3..0000000 --- a/BOJ_11689.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12; -using namespace std; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - ll n; - cin >> n; - ll ans = n; - for (ll k = 2; k <= sqrt(n); k++) { - if (n % k == 0) { - ans = ans - ans / k; - while (n % k == 0)n /= k; - } - } - if (n > 1)ans -= ans / n; - cout << ans; -} diff --git a/BOJ_11778.cpp b/BOJ_11778.cpp deleted file mode 100644 index d00e7d6..0000000 --- a/BOJ_11778.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -typedef vector > matrix; -const long long mod = 1000000007LL; - -matrix operator *(const matrix &a, const matrix &b) { - int n = a.size(); - matrix c(n, vector(n)); - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - for (int k = 0; k < n; k++) { - c[i][j] += a[i][k] * b[k][j]; - } - c[i][j] %= mod; - } - } - return c; -} - -ll gcd(ll a, ll b) { - return b ? gcd(b, a % b) : a; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - long long n, m; - cin >> n >> m; - ll t = gcd(n, m); - matrix ans = {{1, 0}, {0, 1}}; - matrix a = {{1, 1}, {1, 0}}; - - while (t > 0) { - if (t % 2 == 1) { - ans = ans * a; - } - a = a * a; - t /= 2; - } - - cout << ans[0][1] << '\n'; -} diff --git a/BOJ_1202.cpp b/BOJ_1202.cpp deleted file mode 100644 index 2ef1428..0000000 --- a/BOJ_1202.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int Bag[303030]; -priority_queue pq; -vector jew; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n, k; - cin >> n >> k; - - for (int i = 0; i < n; i++) { - int m, v; - cin >> m >> v; - jew.push_back({m, v}); - } - sort(jew.begin(), jew.end()); - - for (int i = 0; i < k; i++) { - cin >> Bag[i]; - } - sort(Bag, Bag + k); - int idx = 0; - ll ans = 0; - for (int i = 0; i < k; i++) { - while (jew[idx].first <= Bag[i] && idx < n) { - // cout << jew[idx].second << " "; - pq.push(jew[idx].second); - idx++; - } - - - if (!pq.empty()) { - ans += pq.top(); - pq.pop(); - } - } - cout << ans; -} diff --git a/BOJ_13646.cpp b/BOJ_13646.cpp deleted file mode 100644 index a7535b9..0000000 --- a/BOJ_13646.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int phi(int n) { - int ans = n; - for (int k = 2; k <= sqrt(n); k++) { - if (n % k == 0) { - ans -= ans / k; - while (n % k == 0) n /= k; - } - } - if (n > 1)ans -= ans / n; - return ans; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n=1; - - while(n!=2147483647){ - cin >> n; - cout << phi(n)/2 << '\n'; - } - - -} diff --git a/BOJ_1377.cpp b/BOJ_1377.cpp new file mode 100644 index 0000000..4392a94 --- /dev/null +++ b/BOJ_1377.cpp @@ -0,0 +1,28 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +pii A[505050]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) { + cin >> A[i].first; + A[i].second = i; + } + stable_sort(A, A + n); + int ans = 0; + for (int i = 0; i < n; i++) { + cout << A[i].second << " "; + // cout << A[i].second - i << " "; + ans = max(ans, abs(A[i].second - i)); + } + // cout << ans + 1; +} diff --git a/BOJ_1504.cpp b/BOJ_1504.cpp deleted file mode 100644 index 2727673..0000000 --- a/BOJ_1504.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const int INF = 987654321; -using namespace std; - - -vector vp[808]; -int dist[808]; - -int n, e, v1, v2; - -int Dijkstra(int st, int ed) { - for (int i = 1; i <= n; i++)dist[i] = INF; - priority_queue, greater<> > pq; - dist[st] = 0; - pq.push({0, st}); - while (!pq.empty()) { - auto [c,v] = pq.top(); - pq.pop(); - for (auto [i,w]: vp[v]) { - if (dist[i] > dist[v] + w) { - dist[i] = dist[v] + w; - - pq.push({dist[i], i}); - } - } - } - return dist[ed]; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - - cin >> n >> e; - for (int i = 0; i < e; i++) { - int a, b, c; - cin >> a >> b >> c; - vp[a].push_back({b, c}); - vp[b].push_back({a, c}); - } - - cin >> v1 >> v2; - - int a1 = Dijkstra(1, v1), a2 = Dijkstra(v1, v2), a3 = Dijkstra(v2, n); - int ans1 = 0; - if (a1 == INF || a2 == INF || a3 == INF)ans1 = INF; - else ans1 = a1 + a2 + a3; - - int b1 = Dijkstra(1, v2), b2 = Dijkstra(v2, v1), b3 = Dijkstra(v1, n); - int ans2 = 0; - if (b1 == INF || b2 == INF || b3 == INF)ans2 = INF; - else ans2 = b1 + b2 + b3; - - if (ans1 == INF || ans2 == INF) - cout << -1; - else - cout << min(ans1, ans2); -} diff --git a/BOJ_16395.cpp b/BOJ_16395.cpp deleted file mode 100644 index 016b61c..0000000 --- a/BOJ_16395.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -int d[31][31]; -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int a, b; - cin >> a >> b; - for (int i = 0; i < 31; i++) { - d[i][0] = 1; - } - for (int i = 1; i < 31; i++) { - for (int j = 1; j <= i; j++) { - d[i][j] = d[i - 1][j - 1] + d[i - 1][j]; - } - } - - cout << d[a - 1][b - 1] << '\n'; - -} diff --git a/BOJ_1644.cpp b/BOJ_1644.cpp deleted file mode 100644 index d6d6bd0..0000000 --- a/BOJ_1644.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int Check[4040404]; -vector Primes; -int cnt[4040404]; - -void Sieve() { - for (int i = 2; i <= 4000000; i++) { - if (Check[i])continue; - Primes.push_back(i); - for (int j = i + i; j <= 4000000; j += i) - Check[j] = 1; - } -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n; - cin >> n; - Sieve(); - // for (auto &i: Primes) { - // cout << i << '\n'; - // } - for (int i = 0; i < Primes.size(); i++) { - int sum = 0; - for (int j = i; j < Primes.size(); j++) { - sum += Primes[j]; - - if (sum > 4000000) { - break; - } else { - cnt[sum]++; - } - } - } - cout << cnt[n] << '\n'; -} diff --git a/BOJ_1647.cpp b/BOJ_1647.cpp deleted file mode 100644 index c4ddbf9..0000000 --- a/BOJ_1647.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -int P[101010]; -int n, m, mx = 0; -vector > E; - -int Find(int v) { - return v == P[v] ? v : P[v] = Find(P[v]); -} - -bool Union(int u, int v) { - return Find(u) != Find(v) && (P[P[u]] = P[v], true); -} - -int Kruskal() { - int ret = 0; - for (int i = 1; i <= n; i++)P[i] = i; - sort(E.begin(), E.end()); - for (auto [w,u,v]: E) - if (Union(u, v)) { - ret += w; - mx = max(mx, w); - } - return ret; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - - cin >> n >> m; - for (int i = 0; i < m; i++) { - int a, b, c; - cin >> a >> b >> c; - E.push_back({c, a, b}); - } - cout << Kruskal() - mx; -} diff --git a/BOJ_16724.cpp b/BOJ_16724.cpp deleted file mode 100644 index 8f4ef10..0000000 --- a/BOJ_16724.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include -// #pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -int n, m, ans; -int dy[4] = {1, -1, 0, 0}; -int dx[4] = {0, 0, 1, -1}; -int table[1000][1000]; -int visited[1000][1000]; - -void dfs(int y, int x) { - visited[y][x] = 1; - int ny = y + dy[table[y][x]], nx = x + dx[table[y][x]]; - - if (visited[ny][nx] == 1) ans++; - if (visited[ny][nx] == 0) dfs(ny, nx); - visited[y][x] = 2; -} - -int main() { - cin >> n >> m; - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - char c; - cin >> c; - if (c == 'U') table[i][j] = 1; - else if (c == 'R') table[i][j] = 2; - else if (c == 'L') table[i][j] = 3; - } - } - for (int i = 0; i < n; i++) - for (int j = 0; j < m; j++) - if (visited[i][j] == 0) dfs(i, j); - cout << ans; -} diff --git a/BOJ_17127.cpp b/BOJ_17127.cpp deleted file mode 100644 index 1761408..0000000 --- a/BOJ_17127.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -vector v; -int n; - -int sum(int a, int b, int c) { - int tmp1 = 1, tmp2 = 1, tmp3 = 1, tmp4 = 1; - for (int i = 0; i < n; i++) - if (i <= a) tmp1 *= v[i]; - else if (i <= b) tmp2 *= v[i]; - else if (i <= c) tmp3 *= v[i]; - else tmp4 *= v[i]; - - return tmp1 + tmp2 + tmp3 + tmp4; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int ans = 0; - cin >> n; - for (int i = 0; i < n; i++) { - int num; - cin >> num; - v.push_back(num); - } - - - for (int i = 0; i < n; i++) { - for (int j = i + 1; j < n; j++) { - for (int k = j + 1; k < n - 1; k++) { - ans = max(ans, sum(i, j, k)); - } - } - } - cout << ans << '\n'; -} diff --git a/BOJ_17404.cpp b/BOJ_17404.cpp deleted file mode 100644 index 4aca606..0000000 --- a/BOJ_17404.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int home[1010][3]; -int dp[1010][3]; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n; - cin >> n; - int ans = 1e9; - - for (int i = 0; i < n; i++) { - cin >> home[i][0] >> home[i][1] >> home[i][2]; - } - - for (int c = 0; c < 3; c++) { - for (int j = 0; j < 3; j++) { - if (j == c) - dp[0][j] = home[0][j]; - else - dp[0][j] = 1e9; - } - for (int i = 1; i < n; i++) { - dp[i][0] = home[i][0] + min(dp[i - 1][1], dp[i - 1][2]); - dp[i][1] = home[i][1] + min(dp[i - 1][0], dp[i - 1][2]); - dp[i][2] = home[i][2] + min(dp[i - 1][1], dp[i - 1][0]); - } - for (int k = 0; k < 3; k++) { - if (c == k)continue; - ans = min(ans, dp[n - 1][k]); - } - } - // for (int i = 0; i < n; i++) { - // for (int j = 0; j <= 2; j++) { - // cout << dp[i][j] << " "; - // } - // cout << '\n'; - // } - cout << ans; -} diff --git a/BOJ_1918.cpp b/BOJ_1918.cpp deleted file mode 100644 index 8926d7a..0000000 --- a/BOJ_1918.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -stack s; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - string str, ans = ""; - cin >> str; - for (int i = 0; i < str.size(); i++) { - if (isalpha(str[i])) { - ans += str[i]; - } else if (str[i] == '(') { - s.push(str[i]); - } else if (str[i] == '*' || str[i] == '/') { - while (!s.empty() && (s.top() == '*' || s.top() == '/')) { - ans += s.top(); - s.pop(); - } - s.push(str[i]); - } else if (str[i] == '+' || str[i] == '-') { - while(!s.empty() && s.top() != '(') { - ans += s.top(); s.pop(); - } - - s.push(str[i]); - } else if (str[i] == ')') { - while (!s.empty() && s.top() != '(') { - ans += s.top(); - s.pop(); - } - s.pop(); - } - } - - while (!s.empty()) { - ans += s.top(); - - s.pop(); - } - cout << ans; -} diff --git a/BOJ_19577.cpp b/BOJ_19577.cpp deleted file mode 100644 index 0eb2e2f..0000000 --- a/BOJ_19577.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -vector v; - -void measure(int n) { - for (int i = 1; i * i <= n; i++) { - if (n % i == 0) { - v.push_back(i); - if (n / i != i)v.push_back(n / i); - } - } -} - -int phi(int n) { - int ans = n; - for (int k = 2; k <= sqrt(n); k++) { - if (n % k == 0) { - ans -= ans / k; - while (n % k == 0) n /= k; - } - } - if (n > 1)ans -= ans / n; - return ans; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n; - cin >> n; - if (n == 1) { - cout << 1; - return 0; - } - if (n % 2) { - cout << -1; - } else { - measure(n); - sort(v.begin(), v.end()); - // for (auto iter: v) { - // cout << iter << " "; - // } - - for (auto x: v) { - if (x * phi(x) == n) { - cout << x; - return 0; - } - } - cout << -1; - } -} diff --git a/BOJ_1987.cpp b/BOJ_1987.cpp deleted file mode 100644 index 1201c18..0000000 --- a/BOJ_1987.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -bool alpha[26]; // 아스키코드 A: 65 ~ Z: 90 -char table[22][22]; -int dx[4] = {0, 1, 0, -1}; -int dy[4] = {1, 0, -1, 0}; -int r, c, cnt; -int ans = 0; - -void DFS(int x, int y, int cnt) { - for (int i = 0; i < 4; i++) { - int nx = x + dx[i]; - int ny = y + dy[i]; - if (nx >= r || ny >= c || nx < 0 || ny < 0)continue; - - if (!alpha[table[nx][ny] - 'A']) { - alpha[table[nx][ny] - 'A'] = true; - DFS(nx, ny, cnt + 1); - alpha[table[nx][ny] - 'A'] = false; - } - } - ans = max(ans, cnt); -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - cin >> r >> c; - for (int i = 0; i < r; i++) { - for (int j = 0; j < c; j++) { - cin >> table[i][j]; - } - } - alpha[table[0][0] - 'A'] = true; - DFS(0, 0, 1); - cout << ans; -} diff --git a/BOJ_20040.cpp b/BOJ_20040.cpp deleted file mode 100644 index 5bd6920..0000000 --- a/BOJ_20040.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int P[505050]; - -void Init(int n) { - for (int i = 0; i < n; i++)P[i] = i; -} - -int Find(int v) { - if (v == P[v])return v; - return P[v] = Find(P[v]); -} - -bool Union(int u, int v) { - u = Find(u); - v = Find(v); - if (u == v) - return true; - if (u != v)P[u] = v; - return false; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n, m; - bool flag = false; - cin >> n >> m; - Init(n); - for (int i = 0; i < m; i++) { - int a, b; - cin >> a >> b; - flag = Union(a, b); - if (flag) { - cout << i + 1 << '\n'; - return 0; - } - } - cout << 0 << '\n'; -} diff --git a/BOJ_2086.cpp b/BOJ_2086.cpp deleted file mode 100644 index cc9982f..0000000 --- a/BOJ_2086.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; -typedef vector > matrix; -const long long mod = 1'000'000'000; - -matrix operator *(const matrix &a, const matrix &b) { - int n = a.size(); - matrix c(n, vector(n, 0)); - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - for (int k = 0; k < n; k++) { - c[i][j] += (a[i][k] * b[k][j]) % mod; - c[i][j] %= mod; - } - } - } - return c; -} - -matrix A2 = {{1, 0}, {0, 1}}; -matrix A = {{1, 1}, {1, 0}}; -matrix B2 = {{1, 0}, {0, 1}}; -matrix B = {{1, 1}, {1, 0}}; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - long long a, b; - cin >> a >> b; - bool flag = false; - if (a == b) { - flag = true; - a--; - } - - b += 2; - a += 1; - while (a > 0) { - if (a % 2 == 1) { - A2 = A2 * A; - } - A = A * A; - a /= 2; - } - while (b > 0) { - if (b % 2 == 1) { - B2 = B2 * B; - } - B = B * B; - b /= 2; - } - if (flag) { - cout << A2[0][1] << '\n'; - } else { - cout << ((B2[0][1] - A2[0][1] + mod) % mod) << '\n'; - } -} diff --git a/BOJ_2230.cpp b/BOJ_2230.cpp deleted file mode 100644 index d7b08ac..0000000 --- a/BOJ_2230.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int A[101010]; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n, m; - cin >> n >> m; - for (int i = 0; i < n; i++) - cin >> A[i]; - sort(A, A + n); - int l = 0, r = 0, ans = 2e9; - while (l < n) { - int diff = A[r] - A[l]; - - if (diff >= m) - ans = min(ans, diff); - if (r > n || diff > m)l++; - else r++; - } - cout << ans; -} diff --git a/BOJ_23832.cpp b/BOJ_23832.cpp deleted file mode 100644 index a3b5f58..0000000 --- a/BOJ_23832.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int phi(int n) { - int ans = n; - for (int k = 2; k <= sqrt(n); k++) { - if (n % k == 0) { - ans -= ans / k; - while (n % k == 0) n /= k; - } - } - if (n > 1)ans -= ans / n; - return ans; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n, sum = 0; - cin >> n; - for (int i = 2; i <= n; i++) { - sum += phi(i); - } - cout << sum << '\n'; -} diff --git a/BOJ_27172.cpp b/BOJ_27172.cpp deleted file mode 100644 index 0ca3781..0000000 --- a/BOJ_27172.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -vector v; -int board[1010101]; -int score[1010101]; - - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int n; - cin >> n; - for (int i = 1; i <= n; i++) { - int num; - cin >> num; - board[num] = 1; - v.push_back(num); - } - for (int i = 0; i < n; i++) { - for (int j = v[i] * 2; j < 1000001; j += v[i]) { - if (board[j] == 1) { - score[v[i]]++; - score[j]--; - } - } - } - for (int i = 0; i < n; i++) - cout << score[v[i]] << " "; -} diff --git a/BOJ_2740.cpp b/BOJ_2740.cpp deleted file mode 100644 index 476298b..0000000 --- a/BOJ_2740.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int matrixA[101][101]; -int matrixB[101][101]; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - - int n, m, k; - cin >> n >> m; - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - int num; - cin >> num; - matrixA[i][j] = num; - } - } - cin >> m >> k; - for (int i = 0; i < m; i++) { - for (int j = 0; j < k; j++) { - int num; - cin >> num; - matrixB[i][j] = num; - } - } - vector > C(n, vector(k)); - for (int i = 0; i < n; i++) { - for (int j = 0; j < k; j++) { - for (int q = 0; q < m; q++) { - C[i][j] += matrixA[i][q] * matrixB[q][j]; - // cout << C[i][j] << " "; - } - } - } - for (int i = 0; i < n; i++) { - for (int j = 0; j < k; j++) { - cout << C[i][j] << " "; - } - cout << '\n'; - } -} diff --git a/BOJ_2749.cpp b/BOJ_2749.cpp deleted file mode 100644 index 7e20912..0000000 --- a/BOJ_2749.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000 - -const ll INF = 10e12 + 10; -using namespace std; - -int F[MOD / 10 * 15]; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - int P = MOD / 10 * 15; - ll n; - cin >> n; - F[1] = 1; - for (int i = 2; i < P; i++) { - F[i] = F[i - 1] + F[i - 2]; - F[i] %= MOD; - } - cout << F[n % P]; -} diff --git a/BOJ_4355.cpp b/BOJ_4355.cpp deleted file mode 100644 index 126fbb2..0000000 --- a/BOJ_4355.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12; -using namespace std; - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - ll n = 1; - bool flag; - while (n != 0) { - cin >> n; - flag = false; - if (n == 0) { - return 0; - } - if (n == 1) - flag = true; - - ll ans = n; - for (ll k = 2; k <= sqrt(n); k++) { - if (n % k == 0) { - ans = ans - ans / k; - while (n % k == 0)n /= k; - } - } - if (n > 1)ans -= ans / n; - if(flag) { - cout << 0 << '\n'; - }else - cout << ans << '\n'; - } -} diff --git a/BOJ_4386.cpp b/BOJ_4386.cpp deleted file mode 100644 index e23177d..0000000 --- a/BOJ_4386.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - -int n; -int P[101]; -vector > vp; -vector > E; - -int Find(int v) { - if (v == P[v])return v; - return P[v] = Find(P[v]); -} - -void Union(int u, int v) { - u = Find(u); - v = Find(v); - - if (u < v)P[v] = u; - else P[u] = v; -} - -bool isCycle(int u, int v) { - u = Find(u); - v = Find(v); - - if (u == v) { - return true; - } - return false; -} - - -double Kruskal() { - double ret = 0; - - sort(E.begin(), E.end()); - for (auto [w,u,v]: E) { - if (isCycle(u, v)) continue; - ret += w; - Union(u, v); - - // cout << ret << " "; - } - - return ret; -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - double ans = 0; - int n; - cin >> n; - for (int i = 0; i < n; i++) { - double x, y; - cin >> x >> y; - vp.push_back({x, y}); - } - for (int i = 0; i < n; i++) { - double x1 = vp[i].first; - double y1 = vp[i].second; - for (int j = i + 1; j < n; j++) { - double x2 = vp[j].first; - double y2 = vp[j].second; - - double dist = sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2)); - E.push_back({dist, i + 1, j + 1}); - // cout << dist << " " << i+1 << " " << j+1 << "\n"; - } - } - for (int i = 1; i <= n; i++)P[i] = i; - ans = Kruskal(); - cout << fixed; - cout.precision(2); - cout << ans << '\n'; -} diff --git a/BOJ_9663.cpp b/BOJ_9663.cpp deleted file mode 100644 index 301287f..0000000 --- a/BOJ_9663.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include -#pragma GCC optimize("O3") -#define ll long long -#define ull unsigned long long -#define pii pair -#define MOD 1000000000 -const ll INF = 10e12 + 10; -using namespace std; - - -int queen[16]; -int n, cnt = 0; - -bool checked(int m) { - for (int i = 0; i < m; i++) { - if (queen[m] == queen[i] || m - i == abs(queen[m] - queen[i])) - return false; - } - return true; -} - -void nQueen(int m) { - if (m == n) { - cnt++; - return; - } - for (int i = 0; i < n; i++) { - queen[m] = i; - if (checked(m)) - nQueen(m + 1); - } -} - -int main() { - ios_base::sync_with_stdio(false), cin.tie(0); - cin >> n; - nQueen(0); - cout << cnt; -} From 1ea31efb8dbac489d8bd663d7efcdf67a45b2a76 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Wed, 7 Feb 2024 17:53:12 +0900 Subject: [PATCH 17/34] commit and sloved 02/07 --- BOJ_19539.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 BOJ_19539.cpp diff --git a/BOJ_19539.cpp b/BOJ_19539.cpp new file mode 100644 index 0000000..aa1b516 --- /dev/null +++ b/BOJ_19539.cpp @@ -0,0 +1,26 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int A[101010]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, sum = 0, cnt = 0; + cin >> n; + for (int i = 1; i <= n; i++) { + cin >> A[i]; + sum += A[i]; + cnt += A[i] / 2; + } + if (sum % 3 || cnt < sum / 3) { + cout << "NO" << '\n'; + } else { + cout << "YES" << '\n'; + } +} From a0dd1b4d18502861f8e8a88ad4f4ddebb6e68055 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 8 Feb 2024 23:56:33 +0900 Subject: [PATCH 18/34] commit and sloved 02/08 --- BOJ_11758.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 BOJ_11758.cpp diff --git a/BOJ_11758.cpp b/BOJ_11758.cpp new file mode 100644 index 0000000..ff80e40 --- /dev/null +++ b/BOJ_11758.cpp @@ -0,0 +1,23 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int x1, x2, x3, y1, y2, y3; + cin >> x1 >> y1; + cin >> x2 >> y2; + cin >> x3 >> y3; + int ccw = (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1); + if (ccw > 0) + cout << 1; + else if (ccw < 0) + cout << -1; + else + cout << 0; +} From 73b081c247d6e8f49f527dc9b5c01dd9f0a1454c Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Fri, 9 Feb 2024 23:34:04 +0900 Subject: [PATCH 19/34] commit and sloved 02/09 --- BOJ_2688.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 BOJ_2688.cpp diff --git a/BOJ_2688.cpp b/BOJ_2688.cpp new file mode 100644 index 0000000..e4445cd --- /dev/null +++ b/BOJ_2688.cpp @@ -0,0 +1,31 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +ll dp[66][11]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int t; + cin >> t; + for (int i = 0; i < 66; i++) { + for (int j = 0; j < 11; j++) { + dp[i][j] = 1; + } + } + for (int i = 2; i <= 65; i++) { + for (int j = 1; j < 10; j++) { + dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; + } + } + while (t--) { + int n; + cin >> n; + cout << dp[n + 1][9] << '\n'; + } +} From 7989e3326ffe42a302e581691a3e0f222aec7dbd Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Tue, 13 Feb 2024 15:43:28 +0900 Subject: [PATCH 20/34] commit and sloved 02/13 --- BOJ_1132.cpp | 13 +++++++++++ BOJ_14428.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ BOJ_14438.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ BOJ_7578.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 BOJ_1132.cpp create mode 100644 BOJ_14428.cpp create mode 100644 BOJ_14438.cpp create mode 100644 BOJ_7578.cpp diff --git a/BOJ_1132.cpp b/BOJ_1132.cpp new file mode 100644 index 0000000..b66b8ce --- /dev/null +++ b/BOJ_1132.cpp @@ -0,0 +1,13 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + +} diff --git a/BOJ_14428.cpp b/BOJ_14428.cpp new file mode 100644 index 0000000..d58b42f --- /dev/null +++ b/BOJ_14428.cpp @@ -0,0 +1,62 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 1 << 17; +using namespace std; + +int N, Q, A[SZ], T[SZ << 1]; + +int minIndex(int a, int b) { + if (a == 1e9)return b; + if (b == 1e9)return a; + return A[a] <= A[b] ? a : b; +} + +int Init(int node = 1, int s = 1, int e = N) { + if (s == e) { + return T[node] = s; + } + int m = (s + e) / 2; + // Init(node * 2, s, m); + // Init(node * 2 + 1, m + 1, e); + return T[node] = minIndex(Init(node * 2, s, m), Init(node * 2 + 1, m + 1, e)); +} + +int Update(int x, int v, int node = 1, int s = 1, int e = N) { + if (s > x || e < x) return T[node]; + if (s == e) { + return T[node]; + } + int m = (s + e) / 2; + return T[node] = minIndex(Update(x, v, node * 2, s, m), Update(x, v, node * 2 + 1, m + 1, e)); +} + +int Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 1e9; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return minIndex(Query(l, r, node * 2, s, m), Query(l, r, node * 2 + 1, m + 1, e)); +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> N; + for (int i = 1; i <= N; i++) + cin >> A[i]; + Init(); + cin >> Q; + while (Q--) { + int num, a, b; + cin >> num >> a >> b; + if (num == 1) { + A[a] = b; + Update(a, b); + } else if (num == 2) { + cout << Query(a, b) << '\n'; + } + } +} diff --git a/BOJ_14438.cpp b/BOJ_14438.cpp new file mode 100644 index 0000000..b634feb --- /dev/null +++ b/BOJ_14438.cpp @@ -0,0 +1,61 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 1 << 17; +using namespace std; + +int N, Q, A[SZ], T[SZ << 1]; + + +void Init(int node = 1, int s = 1, int e = N) { + if (s == e) { + T[node] = A[s]; + return; + } + int m = (s + e) / 2; + Init(node * 2, s, m); + Init(node * 2 + 1, m + 1, e); + T[node] = min(T[node * 2], T[node * 2 + 1]); +} + +void Update(int x, int v, int node = 1, int s = 1, int e = N) { + if (s == e) { + T[node] = v; + return; + } + int m = (s + e) / 2; + if (x <= m)Update(x, v, node * 2, s, m); + else Update(x, v, node * 2 + 1, m + 1, e); + T[node] = min(T[node * 2], T[node * 2 + 1]); +} + + +int Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 1e9; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return min(Query(l, r, node * 2, s, m), Query(l, r, node * 2 + 1, m + 1, e)); +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> N; + for (int i = 1; i <= N; i++) + cin >> A[i]; + Init(); + cin >> Q; + while (Q--) { + int num, a, b; + cin >> num >> a >> b; + if (num == 1) { + Update(a, b); + } else if (num == 2) { + cout << Query(a, b) << '\n'; + } + } +} diff --git a/BOJ_7578.cpp b/BOJ_7578.cpp new file mode 100644 index 0000000..4b127d0 --- /dev/null +++ b/BOJ_7578.cpp @@ -0,0 +1,52 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 505050*2; +using namespace std; + +int N, Q, A[SZ], B[SZ]; +ll T[SZ * 2]; + + +void Update(int x, int node = 1, int s = 1, int e = N) { + if (x < s || x > e)return; + T[node]++; + if (s < e) { + int m = (s + e) / 2; + Update(x, node * 2, s, m); + Update(x, node * 2 + 1, m + 1, e); + } +} + + +ll Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 0; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return Query(l, r, node * 2, s, m) + Query(l, r, node * 2 + 1, m + 1, e); +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cin >> N; + for (int i = 1; i <= N; i++) + cin >> A[i]; + for (int i = 1; i <= N; i++) { + int num; + cin >> num; + B[num] = i; + } + + ll ans = 0; + for (int i = 1; i <= N; i++) { + ans += Query(B[A[i]] + 1, N); + Update(B[A[i]]); + } + cout << ans; +} + From aa3bb17f18269965fba6c173f0874eccaccd4a21 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Wed, 14 Feb 2024 11:41:02 +0900 Subject: [PATCH 21/34] commit and sloved 02/14 --- BOJ_12849.cpp | 32 ++++++++++++++++++++++++++++ BOJ_9463.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 BOJ_12849.cpp create mode 100644 BOJ_9463.cpp diff --git a/BOJ_12849.cpp b/BOJ_12849.cpp new file mode 100644 index 0000000..7ac823d --- /dev/null +++ b/BOJ_12849.cpp @@ -0,0 +1,32 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000007 +const ll INF = 10e12 + 10; +using namespace std; + +ll bon[8]; // 정보관을 idx= 0으로 시작하여 반시계방향으로 idx++ +ll dp[8]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int d; + cin >> d; + dp[0] = 1; + for (int i = 0; i < d; i++) { + bon[0] = dp[1] + dp[7]; + bon[1] = dp[0] + dp[2] + dp[7]; + bon[2] = dp[1] + dp[3] + dp[6] + dp[7]; + bon[3] = dp[2] + dp[4] + dp[6]; + bon[4] = dp[3] + dp[5]; + bon[5] = dp[4] + dp[6]; + bon[6] = dp[2] + dp[3] + dp[5] + dp[7]; + bon[7] = dp[0] + dp[1] + dp[2] + dp[6]; + + for (int j = 0; j < 8; j++) + dp[j] = bon[j] % MOD; + } + cout << dp[0]; +} diff --git a/BOJ_9463.cpp b/BOJ_9463.cpp new file mode 100644 index 0000000..c399f1f --- /dev/null +++ b/BOJ_9463.cpp @@ -0,0 +1,59 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +constexpr int SZ = 101010; +using namespace std; + +int N, Q, A[SZ], B[SZ]; +int T[SZ * 4]; + + +void Update(int x, int node = 1, int s = 1, int e = N) { + if (x < s || x > e)return; + T[node]++; + if (s < e) { + int m = (s + e) / 2; + Update(x, node * 2, s, m); + Update(x, node * 2 + 1, m + 1, e); + } +} + + +int Query(int l, int r, int node = 1, int s = 1, int e = N) { + if (r < s || e < l)return 0; + if (l <= s && e <= r) return T[node]; + int m = (s + e) / 2; + return Query(l, r, node * 2, s, m) + Query(l, r, node * 2 + 1, m + 1, e); +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int t; + cin >> t; + while (t--) { + cin >> N; + memset(A, 0, sizeof(A)); + memset(B, 0, sizeof(B)); + memset(T, 0, sizeof(T)); + for (int i = 1; i <= N; i++) + cin >> A[i]; + for (int i = 1; i <= N; i++) { + int num; + cin >> num; + B[num] = i; + } + + ll ans = 0; + for (int i = 1; i <= N; i++) { + ans += Query(B[A[i]] + 1, N); + Update(B[A[i]]); + } + cout << ans << '\n'; + } +} + From 60e0b1ae65c7696415f47c17026dfdf8b9eea572 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 15 Feb 2024 23:37:34 +0900 Subject: [PATCH 22/34] commit and sloved 02/15 --- BOJ_10189.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 BOJ_10189.cpp diff --git a/BOJ_10189.cpp b/BOJ_10189.cpp new file mode 100644 index 0000000..ef8baf7 --- /dev/null +++ b/BOJ_10189.cpp @@ -0,0 +1,16 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + cout << "# # #### #### # #" << endl; + cout << "#### # # # # # #" << endl; + cout << "#### # # # # # #" << endl; + cout << "# # #### #### # #" << endl; +} From 7cbeac5322770e5df85e2d00627a9bcf799c5e80 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 15 Feb 2024 23:52:21 +0900 Subject: [PATCH 23/34] commit and sloved 02/15 --- BOJ_12850.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 BOJ_12850.cpp diff --git a/BOJ_12850.cpp b/BOJ_12850.cpp new file mode 100644 index 0000000..a71f5b8 --- /dev/null +++ b/BOJ_12850.cpp @@ -0,0 +1,60 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000007 +const ll INF = 10e12 + 10; +using namespace std; + +typedef vector > matrix; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n, 0)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += (a[i][k] * b[k][j]) % MOD; + c[i][j] %= MOD; + } + } + } + return c; +} + +matrix A = { + {0, 1, 0, 0, 0, 1, 0, 0}, + {1, 0, 1, 0, 0, 0, 1, 0}, + {0, 1, 0, 1, 0, 0, 1, 1}, + {0, 0, 1, 0, 1, 0, 0, 1}, + {0, 0, 0, 1, 0, 0, 0, 1}, + {1, 0, 0, 0, 0, 0, 1, 0}, + {0, 1, 1, 0, 0, 1, 0, 1}, + {0, 0, 1, 1, 1, 0, 1, 0} +}; + +matrix ans = { + {1, 0, 0, 0, 0, 0, 0, 0}, + {0, 1, 0, 0, 0, 0, 0, 0}, + {0, 0, 1, 0, 0, 0, 0, 0}, + {0, 0, 0, 1, 0, 0, 0, 0}, + {0, 0, 0, 0, 1, 0, 0, 0}, + {0, 0, 0, 0, 0, 1, 0, 0}, + {0, 0, 0, 0, 0, 0, 1, 0}, + {0, 0, 0, 0, 0, 0, 0, 1} +}; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int d; + cin >> d; + while (d > 0) { + if (d % 2) { + ans = ans * A; + } + A = A * A; + d /= 2; + } + cout << ans[4][4] << '\n'; +} From 8adbbbda377efc321df41cca437089d4bc1ea063 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Fri, 16 Feb 2024 10:18:39 +0900 Subject: [PATCH 24/34] commit and sloved 02/16 --- BOJ_24568.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 BOJ_24568.cpp diff --git a/BOJ_24568.cpp b/BOJ_24568.cpp new file mode 100644 index 0000000..aa431a7 --- /dev/null +++ b/BOJ_24568.cpp @@ -0,0 +1,17 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int r, s, ans = 0; + cin >> r >> s; + ans = r * 8 + s * 3 - 28; + if (ans < 0)ans = 0; + cout << ans; +} From 2ab893a0e973aa7e421f4e6a8871623a734db971 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Sun, 18 Feb 2024 20:17:24 +0900 Subject: [PATCH 25/34] commit and sloved 02/18 --- BOJ_1715.cpp | 32 ++++++++++++++++++++++++++++++++ BOJ_2523.cpp | 28 ++++++++++++++++++++++++++++ M.cpp | 26 ++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 BOJ_1715.cpp create mode 100644 BOJ_2523.cpp create mode 100644 M.cpp diff --git a/BOJ_1715.cpp b/BOJ_1715.cpp new file mode 100644 index 0000000..184ace8 --- /dev/null +++ b/BOJ_1715.cpp @@ -0,0 +1,32 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + + +priority_queue, greater > pq; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) { + int num; + cin >> num; + pq.push(num); + } + int sum = 0; + while (pq.size() > 1) { + int n1 = pq.top(); + pq.pop(); + int n2 = pq.top(); + pq.pop(); + sum += (n1 + n2); + pq.push(n1 + n2); + } + cout << sum; +} diff --git a/BOJ_2523.cpp b/BOJ_2523.cpp new file mode 100644 index 0000000..abb39b6 --- /dev/null +++ b/BOJ_2523.cpp @@ -0,0 +1,28 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int N; + cin >> N; + + for (int i = 0; i < N; i++) { + for (int j = 0; j <= i; j++) { + cout << "*"; + } + cout << "\n"; + } + + for (int i = N - 1; i > 0; i--) { + for (int j = 0; j < i; j++) { + cout << "*"; + } + cout << "\n"; + } +} diff --git a/M.cpp b/M.cpp new file mode 100644 index 0000000..53375b3 --- /dev/null +++ b/M.cpp @@ -0,0 +1,26 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +char arr[10101]; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) + cin >> arr[i]; + char A; + cin >> A; + int cnt = 0; + for (int i = 0; i < n; i++) { + if (arr[i] == A) + cnt++; + } + cout << cnt; +} From da3c7d355ca4c430720162cbf6d4b34fced51f3a Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Mon, 19 Feb 2024 13:32:38 +0900 Subject: [PATCH 26/34] commit and sloved 02/19 --- BOJ_14289.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 BOJ_14289.cpp diff --git a/BOJ_14289.cpp b/BOJ_14289.cpp new file mode 100644 index 0000000..915bf4d --- /dev/null +++ b/BOJ_14289.cpp @@ -0,0 +1,52 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000007 +const ll INF = 10e12 + 10; +using namespace std; +typedef vector > matrix; + +matrix operator *(const matrix &a, const matrix &b) { + int n = a.size(); + matrix c(n, vector(n, 0)); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + for (int k = 0; k < n; k++) { + c[i][j] += (a[i][k] * b[k][j]) % MOD; + c[i][j] %= MOD; + } + } + } + return c; +} + +matrix pow(matrix a, int n) { + matrix ret(a.size(), vector(a.size())); + for (int i = 0; i < a.size(); i++) ret[i][i] = 1; + while (n > 0) { + if (n & 1) ret = ret * a; + n /= 2; + a = a * a; + } + return ret; +} + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n, m; + cin >> n >> m; + matrix A(n, vector(n)); + for (int i = 0; i < m; i++) { + int a, b; + cin >> a >> b; + a--, b--; + A[a][b] = A[b][a] = 1; + } + int d; + cin >> d; + A = pow(A, d); + cout << A[0][0] << '\n'; +} From 9a25badc001ec7be2d8b88afe2609bb4065d3f7b Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Tue, 20 Feb 2024 11:22:12 +0900 Subject: [PATCH 27/34] commit and sloved 02/20 --- BOJ_1080.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 BOJ_1080.cpp diff --git a/BOJ_1080.cpp b/BOJ_1080.cpp new file mode 100644 index 0000000..d74de62 --- /dev/null +++ b/BOJ_1080.cpp @@ -0,0 +1,63 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +char A[55][55]; +char B[55][55]; +int n, m; + +void Checked(int a, int b) { + for (int i = a; i <= a + 2; i++) { + for (int j = b; j <= b + 2; j++) { + if (A[i][j] == '0') + A[i][j] = '1'; + else + A[i][j] = '0'; + } + } + // for (int i = 1; i <= n; i++) { + // for (int j = 1; j <= m; j++) { + // cout << A[i][j] << " "; + // } + // cout << '\n'; + // } + // cout << '\n'; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + + cin >> n >> m; + + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + cin >> A[i][j]; + } + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + cin >> B[i][j]; + } + } + int cnt = 0; + for (int i = 0; i < n - 2; i++) { + for (int j = 0; j < m - 2; j++) { + // cout << i << " " << j << '\n'; + if (A[i][j] != B[i][j]) { + // cout << i << " " << j << '\n'; + Checked(i, j); + cnt++; + } + } + } + for (int i = 0; i < n; i++) + for (int j = 0; j < m; j++) + if (A[i][j] != B[i][j]) + cnt = -1; + cout << cnt << '\n'; +} From 161fcd4993e87b35835619ecc2eea5ac933f4fac Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Tue, 20 Feb 2024 12:16:53 +0900 Subject: [PATCH 28/34] commit and sloved 02/20 --- BOJ_2790.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 BOJ_2790.cpp diff --git a/BOJ_2790.cpp b/BOJ_2790.cpp new file mode 100644 index 0000000..41d8337 --- /dev/null +++ b/BOJ_2790.cpp @@ -0,0 +1,33 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + + +vector A; + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 0; i < n; i++) { + int num; + cin >> num; + A.push_back(num); + } + + sort(A.begin(), A.end(), greater<>()); + + int mx = A[0] + 1, cnt = 0; + for (int i = 1; i < n; i++) { + if (A[i] + n >= mx) { + cnt++; + } + mx = max(mx, A[i] + i + 1); + } + cout << cnt + 1 << '\n'; +} From 86f79a142ef4f706f89f1bb41eea081dd0b28b7a Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Wed, 21 Feb 2024 14:19:17 +0900 Subject: [PATCH 29/34] commit and sloved 02/21 --- BOJ_14731.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 BOJ_14731.cpp diff --git a/BOJ_14731.cpp b/BOJ_14731.cpp new file mode 100644 index 0000000..2ab229d --- /dev/null +++ b/BOJ_14731.cpp @@ -0,0 +1,39 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +// #define MOD 1e9+7 +const ll INF = 10e12 + 10; +using namespace std; + +vector vp; +ll MOD = 1e9 + 7; + +bool compare(const pair &a, const pair &b) { + return a.second < b.second; +} + +ll Pow(ll n) { + ll res = 1, b = 2; + while (n) { + if (n & 1) res = res * b % MOD; + b = b * b % MOD; + n /= 2; + } + return res; +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + ll c, k; + ll ans = 0; + while (n--) { + cin >> c >> k; + ans = (ans + ((c * k) % MOD) * Pow(k - 1) % MOD) % MOD; + } + + cout << ans; +} From 6eba125a1459a7c35f6e8cf5a1959ba5b0fb048d Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 22 Feb 2024 20:38:32 +0900 Subject: [PATCH 30/34] commit and sloved 02/22 --- BOJ_2668.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 BOJ_2668.cpp diff --git a/BOJ_2668.cpp b/BOJ_2668.cpp new file mode 100644 index 0000000..04cee37 --- /dev/null +++ b/BOJ_2668.cpp @@ -0,0 +1,39 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int Arr[101]; +bool visited[101]; +vector v; + +void DFS(int idx, int val) { + if (visited[idx]) { + if (idx == val) { + v.push_back(val); + } + } else { + visited[idx] = true; + DFS(Arr[idx], val); + } +} + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + for (int i = 1; i <= n; i++) + cin >> Arr[i]; + for (int i = 1; i <= n; i++) { + memset(visited, false, sizeof(visited)); + DFS(i, i); + } + cout << v.size() << '\n'; + for (auto iter: v) { + cout << iter << '\n'; + } +} From 0460554be4bbf538604949016b17ed987d9ba7d4 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Thu, 22 Feb 2024 21:58:40 +0900 Subject: [PATCH 31/34] commit and sloved 02/22 --- BOJ_4485.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 BOJ_4485.cpp diff --git a/BOJ_4485.cpp b/BOJ_4485.cpp new file mode 100644 index 0000000..316d1b4 --- /dev/null +++ b/BOJ_4485.cpp @@ -0,0 +1,58 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + +int table[130][130]; +int C[130][130]; +int n = 1; + +int dx[4] = {1, 0, -1, 0}; +int dy[4] = {0, 1, 0, -1}; + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int num = 0; + while (true) { + num++; + cin >> n; + if (n == 0)break; + + memset(table, 0, sizeof(table)); + for (int i = 0; i < n; i++) { + fill(C[i], C[i] + n, 1e9); + for (int j = 0; j < n; j++) { + cin >> table[i][j]; + } + } + + + queue q; + q.push({0, 0}); + C[0][0] = table[0][0]; + while (!q.empty()) { + auto cur = q.front(); + q.pop(); + for (int dir = 0; dir < 4; dir++) { + int nx = cur.first + dx[dir]; + int ny = cur.second + dy[dir]; + if (nx < 0 || ny < 0 || nx >= n || ny >= n)continue; + if (C[nx][ny] <= C[cur.first][cur.second] + table[nx][ny])continue; + C[nx][ny] = C[cur.first][cur.second] + table[nx][ny]; + q.push({nx, ny}); + } + } + // for (int i = 0; i < n; i++) { + // for (int j = 0; j < n; j++) { + // cout << C[i][j] << " "; + // } + // cout << '\n'; + // } + cout << "Problem " << num << ": " << C[n - 1][n - 1] << '\n'; + } +} From 6176b6700f64399c5984bf0461ca78d4dc61a0cf Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Fri, 23 Feb 2024 15:34:02 +0900 Subject: [PATCH 32/34] commit and sloved 02/23 --- BOJ_2458.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 BOJ_2458.cpp diff --git a/BOJ_2458.cpp b/BOJ_2458.cpp new file mode 100644 index 0000000..1cb31b9 --- /dev/null +++ b/BOJ_2458.cpp @@ -0,0 +1,36 @@ +#include + +using namespace std; + +int table[505][505]; + +int main() { + int n, m; + cin >> n >> m; + while (m--) { + int a, b; + cin >> a >> b; + table[a][b] = 1; + } + for (int k = 1; k <= n; k++) { + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= n; j++) { + if (table[i][k] && table[k][j]) { + table[i][j] = 1; + } + } + } + } + int ans = 0; + for (int i = 1; i <= n; i++) { + int cnt = 0; + for (int j = 1; j <= n; j++) { + if (table[i][j] || table[j][i]) { + cnt++; + } + } + if (cnt == n - 1)ans++; + } + cout << ans << '\n'; +} + From 0bf26dc7986c04a2e6668b26808f17a165c65fad Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Fri, 23 Feb 2024 17:43:40 +0900 Subject: [PATCH 33/34] commit and sloved 02/23 --- BOJ_17835.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 BOJ_17835.cpp diff --git a/BOJ_17835.cpp b/BOJ_17835.cpp new file mode 100644 index 0000000..5483367 --- /dev/null +++ b/BOJ_17835.cpp @@ -0,0 +1,58 @@ +#include + +using ll = long long; +using namespace std; + +ll n, m, k; +vector > G[101010]; +ll dist[101010]; +ll cost[101010]; +const ll INF = 1e18; + +priority_queue, vector >, greater > > pq; + +void Dijkstra() { + while (!pq.empty()) { + auto [v,c] = pq.top(); + pq.pop(); + if (dist[c] < v)continue; + for (auto nxt: G[c]) { + // 해당 g의 v u c 니까 + if (dist[nxt.first] > dist[c] + nxt.second) { + dist[nxt.first] = dist[c] + nxt.second; + pq.push({dist[nxt.first], nxt.first}); + } + } + } +} + +int main() { + cin >> n >> m >> k; + + fill(dist, dist + 101010, INF); + + for (int i = 0; i < m; i++) { + int u, v, c; + cin >> u >> v >> c; + G[v].push_back({u, c}); + } + + + for (int i = 0; i < k; i++) { + int num; + cin >> num; + dist[num] = 0; + pq.push({0, num}); + } + + Dijkstra(); + ll idx = 0; + ll mx = -1; + for (int i = 1; i <= n; i++) { + if (mx < dist[i]) { + idx = i; + mx = dist[i]; + } + } + cout << idx << "\n" << mx; +} From c7ae68d5d6db17bd87005c62c10d8db1d9bc6c66 Mon Sep 17 00:00:00 2001 From: cywin1018 Date: Sun, 25 Feb 2024 16:58:43 +0900 Subject: [PATCH 34/34] commit and sloved 02/25 --- BOJ_14713.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 BOJ_14713.cpp diff --git a/BOJ_14713.cpp b/BOJ_14713.cpp new file mode 100644 index 0000000..c5a6f23 --- /dev/null +++ b/BOJ_14713.cpp @@ -0,0 +1,54 @@ +#include +#pragma GCC optimize("O3") +#define ll long long +#define ull unsigned long long +#define pii pair +#define MOD 1000000000 +const ll INF = 10e12 + 10; +using namespace std; + + +int main() { + ios_base::sync_with_stdio(false), cin.tie(0); + int n; + cin >> n; + string tmp; + getline(cin, tmp); + vector > q(n + 1); + for (int i = 0; i <= n; i++) { + string str; + getline(cin, str); + istringstream is(str); + + string s; + while (getline(is, s, ' ')) { + q[i].push(s); + } + } + bool flag = false; + int sz = q[n].size(); + + for (int i = 0; i < sz; i++) { + string wd = q[n].front(); + for (int j = 0; j < n; j++) { + if ((!q[j].empty()) && (q[j].front() == wd)) { + q[j].pop(), q[n].pop(); + + flag = true; + break; + } + } + if (!flag) { + cout << "Impossible" << '\n'; + return 0; + } + flag = false; + } + for (int j = 0; j < n; j++) { + if (!q[j].empty()) { + cout << "Impossible" << '\n'; + return 0; + } + } + cout << "Possible" << '\n'; +}