#include<iostream> #include<string> usingnamespace std; bool st[10]; string str; voiddfs(int x){ if (x == 9) { int a = stoi(str.substr(0, 3)); int b = stoi(str.substr(3, 3)); int c = stoi(str.substr(6, 3)); if (a * 2 == b && a * 3 == c) { cout << a << " " << b << " " << c << endl; } } for (int i = 1; i < 10; i++) { if (!st[i]) { st[i] = true; str.push_back(i + '0'); dfs(x + 1); st[i] = false; str.pop_back(); } } } intmain(){ dfs(0); return0; }
#include<iostream> usingnamespace std; intmain(){ int a, b; int res = 0, mind = 0; for (int i = 1; i <= 7; i++) { cin >> a >> b; int t = min(0, 8 - a - b); if (mind > t) { res = i; mind = t; } } cout << res; return0; }
#include <iostream>
using namespace std;
int main() {
int n, x, res = 0;
cin >> n >> x;
for (int i = 1; i <= n; i++) {
int t = i;
while (t > 0) {
if (t % 10 == x) res++;
t /= 10;
}
}
cout << res;
return 0;
}
```c++ #include <iostream> #include <string> using namespace std; const int N = 1000; string g[N][N]; int main() { int n, i = 1, j = 1, t = 1, flag = 1; cin >> n; while (t < n) { if (flag == 1) { j++; flag = 2; } else if (flag == 2) { i++; j--; if(j == 1) flag = 3; } else if (flag == 3) { i++; flag = 4; } else if (flag == 4) { i--; j++; if (i == 1) flag = 1; } t++; } cout << i << "/" << j; return 0; }
#include<iostream> usingnamespace std; bool nums[10001]; intmain(){ int n, m, l, r; cin >> n >> m; for (int i = 0; i < m; i++) { cin >> l >> r; for (int j = l; j <= r; j++) nums[j] = true; } int res = 0; for (int i = 0; i <= n; i++) if (!nums[i]) res++; cout << res; return0; }
#include<iostream> #include<set> usingnamespace std; set<int> nums[1001]; intmain(){ int n, m, k, x; cin >> n >> m >> k; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> x; nums[x].insert(j); } } for (int i = 1; i <= k; i++) { cout << nums[i].size() << " "; } return0; }
#include<iostream> #include<vector> usingnamespace std; int nums[21], n, k, res; bool st[10000001]; voiddfs(int a, int start, int t){ if (a == k) { if (!st[t]) res++; return; } for (int i = start; i < n; i++) { dfs(a + 1, i + 1, t + nums[i]); } } intmain(){ cin >> n >> k; st[0] = st[1] = true; for (int i = 2; i < 10000001; i++) { if (!st[i]) { for (int j = i + i; j < 10000001; j += i) st[j] = true; } } for (int i = 0; i < n; i++) cin >> nums[i]; dfs(0, 0, 0); cout << res; return0; }
#include<iostream> usingnamespace std; intmain(){ longlong a, b, c; cin >> a >> b >> c; longlong res = c * a + c * (c - 1) * (b - a) / 2; cout << res; return0; }
#include<iostream> usingnamespace std; int n, k, res; voiddfs(int cnt, int s, int t){ if (cnt == k && t == n) res++; if (cnt == k) return; for (int i = s; t + i*(k - cnt) <= n; i++) { dfs(cnt + 1, i, t + i); } } intmain(){ cin >> n >> k; dfs(0, 1, 0); cout << res; return0; }
dp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include<iostream> usingnamespace std; int dp[201][7]; intmain(){ int n, k; cin >> n >> k; for (int i = 1; i <= n; i++) { dp[i][1] = 1; } for (int i = 2; i <= n; i++) { for (int j = 2; j <= k; j++) { dp[i][j] += dp[i - 1][j - 1]; if (i > j) dp[i][j] += dp[i - j][j]; } } cout << dp[n][k]; return0; }
#include<iostream> usingnamespace std; int gg[100001][4]; intmain(){ int n, a, b, g, k, x, y, res = -1; cin >> n; for (int i = 1; i <= n; i++) { cin >> a >> b >> g >> k; gg[i][0] = a; gg[i][1] = a + g; gg[i][2] = b; gg[i][3] = b + k; } cin >> x >> y; for (int i = n; i > 0; i--) { if (x >= gg[i][0] && x <= gg[i][1] && y >= gg[i][2] && y <= gg[i][3]) { res = i; break; } } cout << res; return0; }
#include<iostream> #include<string> usingnamespace std; structnode{ bool flag; string name; } nums[100001]; intmain(){ int n, m, a, s; cin >> n >> m; for (int i = 0; i < n; i++) cin >> nums[i].flag >> nums[i].name; int start = 0; for (int i = 0; i < m; i++) { cin >> a >> s; if (nums[start].flag ^ a) start = (start + s) % n; else start = (start - s + n) % n; } cout << nums[start].name; return0; }
#include<iostream> usingnamespace std; intmain(){ int l, r, res = 0; cin >> l >> r; for (int i = l; i <= r; i++) { int t = i; while (t > 1) { if (t % 10 == 2) res++; t /= 10; } } cout << res; return0; }
#include<iostream> #include<algorithm> usingnamespace std; int nums[100001]; voidquick_sort(int l, int r){ if (l >= r) return; int i = l - 1, j = r + 1, t = nums[l + r >> 1]; while (i < j) { do i++; while (nums[i] < t); do j--; while (nums[j] > t); if (i < j) swap(nums[i], nums[j]); } quick_sort(l, j); quick_sort(j + 1, r); } intmain(){ int n; cin >> n; for (int i = 0; i < n; i++) cin >> nums[i]; quick_sort(0, n - 1); for (int i = 0; i < n; i++) cout << nums[i] << " "; return0; }
#include<iostream> usingnamespace std; double a, b, c, d, nums[201]; doublef(double x){ return a * x * x * x + b * x * x + c * x + d; } voidcheck(double l, double r, bool flag){ while (r - l > 1e-6) { double mid = (l + r) / 2; if (flag) { if (f(mid) > 0) r = mid; else l = mid; } else { if (f(mid) < 0) r = mid; else l = mid; } } printf("%.2f ", l); } intmain(){ cin >> a >> b >> c >> d; double i = -100; bool flag = false, flag2 = true; if (f(-100) < 0) flag = true; while (i <= 100) { if (flag2) { if (f(i) * f(-100) < 0) { check(i - 0.5, i, flag); flag2 = false; } } else { if (f(i) * f(-100) > 0) { check(i - 0.5, i, !flag); flag2 = true; } } i += 0.5; } return0; }
#include<iostream> usingnamespace std; int l, n, m, nums[50005], res; boolcheck(int x){ int cnt = 0, now = 0; for (int i = 1; i <= n+1; i++) { if (nums[i] - nums[now] < x) cnt++; else now = i; } if (cnt > m) returnfalse; returntrue; } intmain(){ cin >> l >> n >> m; for (int i = 1; i <= n; i++) cin >> nums[i]; nums[n+1] = l; int i = 1, j = l; while (i < j) { int mid = i + j + 1 >> 1; if (check(mid)) i = mid; else j = mid - 1; } cout << i; return0; }
#include<iostream> #include<cstring> usingnamespace std; int g[1005][1005], n, m, mid, x, y; int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1}; bool visit[1005][1005], flag; voiddfs(int a, int b){ if (a == n - 1) { flag = true; return; } for (int i = 0; i < 4; i++) { x = a + dx[i], y = b + dy[i]; if (x >= 0 && x < n && y >= 0 && y < m && !visit[x][y] && g[x][y] <= mid) { visit[x][y] = true; dfs(x, y); visit[x][y] = false; if (flag) return; } } } boolcheck(){ flag = false; memset(visit, false, sizeof(visit)); dfs(0, 0); return flag; } intmain(){ cin >> n >> m; int l = 1000, r = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%d", &g[i][j]); l = min(l, g[i][j]); r = max(r, g[i][j]); } } while (l < r) { mid = l + r >> 1; if (check()) r = mid; else l = mid + 1; } cout << r; return0; }
#include<iostream> #include<cstring> #include<queue> usingnamespace std; int g[1005][1005], n, m, mid, x, y; int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1}; bool visit[1005][1005]; boolbfs(){ memset(visit, false, sizeof(visit)); queue<pair<int, int> > q; q.push({0, 0}); while (!q.empty()) { int a = q.front().first, b = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { x = a + dx[i], y = b + dy[i]; if (x >= 0 && x < n && y >= 0 && y < m && !visit[x][y] && g[x][y] <= mid) { q.push({x, y}); visit[x][y] = true; if (x == n - 1) returntrue; } } } returnfalse; } intmain(){ cin >> n >> m; int l = 1000, r = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%d", &g[i][j]); l = min(l, g[i][j]); r = max(r, g[i][j]); } } while (l < r) { mid = l + r >> 1; if (bfs()) r = mid; else l = mid + 1; } cout << r; return0; }
#include<iostream> usingnamespace std; typedeflonglong LL; LL s, res = 1e12, t; int n, m, w[200005], v[200005], sums[200005], cnts[200005], q[200005][2], mid; boolcheck(){ t = 0; for (int i = 1; i <= n; i++) { if (w[i-1] >= mid) { sums[i] = sums[i-1] + v[i-1]; cnts[i] = cnts[i-1] + 1; } else { sums[i] = sums[i-1]; cnts[i] = cnts[i-1]; } } for (int k = 0; k < m; k++) { int l = q[k][0], r = q[k][1]; t += (cnts[r] - cnts[l-1]) * (sums[r] - sums[l-1]); } res = min(res, abs(t-s)); if (t > s) returntrue; returnfalse; } intmain(){ cin >> n >> m >> s; for (int i = 0; i < n; i++) cin >> w[i] >> v[i]; for (int i = 0; i < m; i++) cin >> q[i][0] >> q[i][1]; int l = 1, r = 1e6; while (l < r) { mid = l + r >> 1; if (check()) l = mid + 1; else r = mid; } cout << res << endl; return0; }
#include<iostream> usingnamespace std; longlong n, m, w[1000005], d[1000005], s[1000006], t[1000005], diff[1000005], nums[1000005], mid; boolcheck(){ fill(diff, diff + 1000005, 0); for (int i = 1; i <= mid; i++) { diff[s[i]] += d[i]; diff[t[i] + 1] -= d[i]; } for (int i = 1; i <= n; i++) { nums[i] = nums[i - 1] + diff[i]; if (nums[i] > w[i]) returnfalse; } returntrue; } intmain(){ cin >> n >> m; for (int i = 1; i <= n; i++) cin >> w[i]; for (int i = 1; i <= m; i++) cin >> d[i] >> s[i] >> t[i]; int l = 1, r = n + 1; while (l < r) { mid = l + r >> 1; if (check()) l = mid + 1; else r = mid; } if (r > n) cout << 0; else cout << "-1\n" << l << endl; return0; }
#include<iostream> usingnamespace std; typedeflonglong LL; LL n, m, mid, nums[100005]; LL check(){ LL cnt = 0, t = 0; for (int i = 0; i < n; i++) { t += nums[i]; t = max<LL>(0, t); if (t >= mid) { t = 0; cnt++; } } return cnt; } intmain(){ cin >> n >> m; for (int i = 0; i < n; i++) cin >> nums[i]; LL l = 1, r = 1e18; while (l < r) { mid = l + r >> 1; if (check() > m) l = mid + 1; else r = mid; } mid = l; if (check() != m) { cout << -1; return0; } cout << l << " "; r = 1e18; while (l < r) { mid = l + r + 1>> 1; if (check() < m) r = mid - 1; else l = mid; } cout << r; return0; }
#include<iostream> usingnamespace std; typedeflonglong LL; LL qmi(int a, int b, int p){ LL res = 1, t = a; while (b) { if (b & 1) res = (res * t) % p; t = (t * t) % p; b >>= 1; } res %= p; return res; } intmain(){ LL a, b, p; cin >> a >> b >> p; printf("%d^%d mod %d=%d", a, b, p, qmi(a, b, p)); return0; }
#include<iostream> #include<vector> #include<algorithm> #include<map> usingnamespace std; typedef pair<int, int> PII; PII nums[5005]; intmain(){ int n, m, price, cnt; cin >> n >> m; for (int i = 0; i < m; i++) cin >> nums[i].first >> nums[i].second; sort(nums, nums + m); int res = 0, id = 0; while (n > 0) { if (n >= nums[id].second) { res += nums[id].first * nums[id].second; n -= nums[id].second; } else { res += n * nums[id].first; n = 0; } id++; } cout << res; return0; }
#include<iostream> #include<string> #include<algorithm> usingnamespace std; intmain(){ string a, c; int b; cin >> a >> b; longlong t = 0; for (int i = 0; i < a.size(); i++) { t = t * 10 + a[i] - '0'; c += (t / b) + '0'; t -= t / b * b; } while (c[0] == '0') c.erase(c.begin()); if (c.size()) cout << c; else cout << "0"; return0; }
#include<iostream> #include<string> #include<algorithm> usingnamespace std; string s[51], fac[51]; string mul(string a, int b){ string c; int t = 0; reverse(a.begin(), a.end()); for (int i = 0; i < a.size(); i++) { int d = (a[i] - '0') * b + t; c += (d % 10) + '0'; if (d >= 10) t = d / 10; else t = 0; } if (t) { string e = to_string(t); reverse(e.begin(), e.end()); c += e; } reverse(c.begin(), c.end()); return c; } string add(string a, string b){ string c; int t = 0, i = 0; reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); for (; i < a.size(); i++) { int d = a[i] - '0' + b[i] - '0' + t; c += (d % 10) + '0'; if (d >= 10) t = 1; else t = 0; } for (; i < b.size(); i++) { int d = b[i] - '0' + t; c += (d % 10) + '0'; if (d >= 10) t = 1; else t = 0; } if (t) c += '1'; reverse(c.begin(), c.end()); return c; } intmain(){ int n; cin >> n; s[1] = fac[1] = "1"; for (int i = 2; i <= n; i++) { fac[i] = mul(fac[i - 1], i); s[i] = add(s[i - 1], fac[i]); } cout << s[n]; return0; }
#include<iostream> usingnamespace std; int sums[50005], l[7], r[7]; intmain(){ int n, x; cin >> n; for (int i = 1; i <= n; i++) { cin >> x; sums[i] = (sums[i - 1] + x) % 7; } for (int i = n; i >= 1; i--) l[sums[i]] = i; l[0] = 0; for (int i = 1; i <= n; i++) r[sums[i]] = i; int res = 0; for (int i = 0; i < 7; i++) res = max(res, r[i] - l[i]); cout << res; return0; }
#include<iostream> usingnamespace std; int g[105][105] = {0}, dp[105][105]; intmain(){ int n, m, x, res = 0; cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> x; g[i][j] = g[i-1][j] + g[i][j-1] - g[i-1][j-1] + x; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { int l = 0, r = min(n, m); while (l < r) { int mid = l + r + 1 >> 1; if (i + mid > n || j + mid > m || g[i + mid][j+mid] - g[i+mid][j] - g[i][j+mid] + g[i][j] < mid * mid) r = mid - 1; else l = mid; } if (g[i+r][j+r] - g[i+r][j] - g[i][j+r] + g[i][j] == r*r) res = max(res, r); } } cout << res; return0; }