Skip to content

Commit c6723c2

Browse files
author
Khanh Vu
committed
update
1 parent 1f881e9 commit c6723c2

File tree

50 files changed

+3823
-14
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+3823
-14
lines changed

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"files.associations": {
33
"vector": "cpp",
44
"iosfwd": "cpp",
5-
"ios": "cpp"
5+
"ios": "cpp",
6+
"array": "cpp"
67
}
78
}

atcoder/abc042/c.cpp

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
#include <bits/stdc++.h>
2+
3+
#include <ranges>
4+
using namespace std;
5+
// #pragma GCC optimize("Ofast")
6+
// #pragma GCC target("avx2")
7+
8+
#ifdef LOCAL
9+
#include "../../debug.h"
10+
#else
11+
#define debug(...) 42
12+
#endif
13+
14+
namespace utils {
15+
template <typename T>
16+
bool chMax(T& target, const T& value) {
17+
if (value > target) {
18+
target = value;
19+
return true;
20+
}
21+
return false;
22+
}
23+
24+
template <typename T>
25+
bool chMin(T& target, const T& value) {
26+
if (value < target) {
27+
target = value;
28+
return true;
29+
}
30+
return false;
31+
}
32+
} // namespace utils
33+
using namespace utils;
34+
35+
using ll = long long;
36+
using ld = long double;
37+
const char el = '\n';
38+
39+
template <int MOD_> struct modnum {
40+
static constexpr int MOD = MOD_;
41+
static_assert(MOD_ > 0, "MOD must be positive");
42+
43+
private:
44+
using ll = int64_t;
45+
46+
int v;
47+
48+
static int minv(int a, int m) {
49+
a %= m;
50+
assert(a);
51+
return a == 1 ? 1 : int(m - ll(minv(m, a)) * ll(m) / a);
52+
}
53+
54+
public:
55+
56+
modnum() : v(0) {}
57+
modnum(ll v_) : v(int(v_ % MOD)) { if (v < 0) v += MOD; }
58+
explicit operator int() const { return v; }
59+
friend std::ostream& operator << (std::ostream& out, const modnum& n) { return out << int(n); }
60+
friend std::istream& operator >> (std::istream& in, modnum& n) { ll v_; in >> v_; n = modnum(v_); return in; }
61+
62+
friend bool operator == (const modnum& a, const modnum& b) { return a.v == b.v; }
63+
friend bool operator != (const modnum& a, const modnum& b) { return a.v != b.v; }
64+
65+
modnum inv() const {
66+
modnum res;
67+
res.v = minv(v, MOD);
68+
return res;
69+
}
70+
friend modnum inv(const modnum& m) { return m.inv(); }
71+
modnum neg() const {
72+
modnum res;
73+
res.v = v ? MOD-v : 0;
74+
return res;
75+
}
76+
friend modnum neg(const modnum& m) { return m.neg(); }
77+
78+
modnum operator- () const {
79+
return neg();
80+
}
81+
modnum operator+ () const {
82+
return modnum(*this);
83+
}
84+
85+
modnum& operator ++ () {
86+
v ++;
87+
if (v == MOD) v = 0;
88+
return *this;
89+
}
90+
modnum& operator -- () {
91+
if (v == 0) v = MOD;
92+
v --;
93+
return *this;
94+
}
95+
modnum& operator += (const modnum& o) {
96+
v += o.v;
97+
if (v >= MOD) v -= MOD;
98+
return *this;
99+
}
100+
modnum& operator -= (const modnum& o) {
101+
v -= o.v;
102+
if (v < 0) v += MOD;
103+
return *this;
104+
}
105+
modnum& operator *= (const modnum& o) {
106+
v = int(ll(v) * ll(o.v) % MOD);
107+
return *this;
108+
}
109+
modnum& operator /= (const modnum& o) {
110+
return *this *= o.inv();
111+
}
112+
113+
friend modnum operator ++ (modnum& a, int) { modnum r = a; ++a; return r; }
114+
friend modnum operator -- (modnum& a, int) { modnum r = a; --a; return r; }
115+
friend modnum operator + (const modnum& a, const modnum& b) { return modnum(a) += b; }
116+
friend modnum operator - (const modnum& a, const modnum& b) { return modnum(a) -= b; }
117+
friend modnum operator * (const modnum& a, const modnum& b) { return modnum(a) *= b; }
118+
friend modnum operator / (const modnum& a, const modnum& b) { return modnum(a) /= b; }
119+
};
120+
121+
template <typename T> T pow(T a, long long b) {
122+
assert(b >= 0);
123+
T r = 1; while (b) { if (b & 1) r *= a; b >>= 1; a *= a; } return r;
124+
}
125+
126+
using num = modnum<1000000007>;
127+
128+
129+
void solve() {
130+
int n, k;
131+
cin >> n >> k;
132+
vector ban(10, false);
133+
for (int i = 0; i < k; ++i) {
134+
int x;
135+
cin >> x;
136+
ban[x] = true;
137+
}
138+
139+
for (int i = 0; i < 100000; ++i) {
140+
int a = n + i;
141+
bool ok = true;
142+
for (char x : to_string(a)) {
143+
ok &= !ban[x - '0'];
144+
}
145+
if (ok) {
146+
cout << a << el;
147+
break;
148+
}
149+
}
150+
}
151+
152+
const bool is_multitest = false;
153+
154+
155+
int main() {
156+
ios_base::sync_with_stdio(false);
157+
cin.tie(0);
158+
int t = 1;
159+
if (is_multitest) cin >> t;
160+
while (t--) solve();
161+
return 0;
162+
}

atcoder/abc042/d.cpp

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
#include <bits/stdc++.h>
2+
3+
#include <ranges>
4+
using namespace std;
5+
// #pragma GCC optimize("Ofast")
6+
// #pragma GCC target("avx2")
7+
8+
#ifdef LOCAL
9+
#include "../../debug.h"
10+
#else
11+
#define debug(...) 42
12+
#endif
13+
14+
namespace utils {
15+
template <typename T>
16+
bool chMax(T& target, const T& value) {
17+
if (value > target) {
18+
target = value;
19+
return true;
20+
}
21+
return false;
22+
}
23+
24+
template <typename T>
25+
bool chMin(T& target, const T& value) {
26+
if (value < target) {
27+
target = value;
28+
return true;
29+
}
30+
return false;
31+
}
32+
} // namespace utils
33+
using namespace utils;
34+
35+
using ll = long long;
36+
using ld = long double;
37+
const char el = '\n';
38+
39+
template <int MOD_> struct modnum {
40+
static constexpr int MOD = MOD_;
41+
static_assert(MOD_ > 0, "MOD must be positive");
42+
43+
private:
44+
using ll = int64_t;
45+
46+
int v;
47+
48+
static int minv(int a, int m) {
49+
a %= m;
50+
assert(a);
51+
return a == 1 ? 1 : int(m - ll(minv(m, a)) * ll(m) / a);
52+
}
53+
54+
public:
55+
56+
modnum() : v(0) {}
57+
modnum(ll v_) : v(int(v_ % MOD)) { if (v < 0) v += MOD; }
58+
explicit operator int() const { return v; }
59+
friend std::ostream& operator << (std::ostream& out, const modnum& n) { return out << int(n); }
60+
friend std::istream& operator >> (std::istream& in, modnum& n) { ll v_; in >> v_; n = modnum(v_); return in; }
61+
62+
friend bool operator == (const modnum& a, const modnum& b) { return a.v == b.v; }
63+
friend bool operator != (const modnum& a, const modnum& b) { return a.v != b.v; }
64+
65+
modnum inv() const {
66+
modnum res;
67+
res.v = minv(v, MOD);
68+
return res;
69+
}
70+
friend modnum inv(const modnum& m) { return m.inv(); }
71+
modnum neg() const {
72+
modnum res;
73+
res.v = v ? MOD-v : 0;
74+
return res;
75+
}
76+
friend modnum neg(const modnum& m) { return m.neg(); }
77+
78+
modnum operator- () const {
79+
return neg();
80+
}
81+
modnum operator+ () const {
82+
return modnum(*this);
83+
}
84+
85+
modnum& operator ++ () {
86+
v ++;
87+
if (v == MOD) v = 0;
88+
return *this;
89+
}
90+
modnum& operator -- () {
91+
if (v == 0) v = MOD;
92+
v --;
93+
return *this;
94+
}
95+
modnum& operator += (const modnum& o) {
96+
v += o.v;
97+
if (v >= MOD) v -= MOD;
98+
return *this;
99+
}
100+
modnum& operator -= (const modnum& o) {
101+
v -= o.v;
102+
if (v < 0) v += MOD;
103+
return *this;
104+
}
105+
modnum& operator *= (const modnum& o) {
106+
v = int(ll(v) * ll(o.v) % MOD);
107+
return *this;
108+
}
109+
modnum& operator /= (const modnum& o) {
110+
return *this *= o.inv();
111+
}
112+
113+
friend modnum operator ++ (modnum& a, int) { modnum r = a; ++a; return r; }
114+
friend modnum operator -- (modnum& a, int) { modnum r = a; --a; return r; }
115+
friend modnum operator + (const modnum& a, const modnum& b) { return modnum(a) += b; }
116+
friend modnum operator - (const modnum& a, const modnum& b) { return modnum(a) -= b; }
117+
friend modnum operator * (const modnum& a, const modnum& b) { return modnum(a) *= b; }
118+
friend modnum operator / (const modnum& a, const modnum& b) { return modnum(a) /= b; }
119+
};
120+
121+
template <typename T> T pow(T a, long long b) {
122+
assert(b >= 0);
123+
T r = 1; while (b) { if (b & 1) r *= a; b >>= 1; a *= a; } return r;
124+
}
125+
126+
using num = modnum<1000000007>;
127+
128+
129+
void solve() {
130+
int h, w;
131+
cin >> h >> w;
132+
int a, b;
133+
cin >> a >> b;
134+
135+
vector<num> f(h + w + 1);
136+
f[0] = num(1);
137+
for (int i = 1; i < h + w + 1; ++i) {
138+
f[i] = f[i-1] * num(i);
139+
}
140+
141+
function<num(int, int)> nck = [&](int n, int c) {
142+
return f[n] / f[c] / f[n - c];
143+
};
144+
145+
num res;
146+
num pf;
147+
for (int i = 0; i < h - a; ++i) {
148+
int j = b;
149+
int ri = h - i - 1;
150+
int rj = w - j - 1;
151+
num ways = nck(i + j, j);
152+
if (i > 0) {
153+
ways -= nck(i + j - 1, j);
154+
}
155+
ways *= nck(ri + rj, rj);
156+
res += ways;
157+
}
158+
cout << int(res) << el;
159+
}
160+
161+
const bool is_multitest = false;
162+
163+
164+
int main() {
165+
ios_base::sync_with_stdio(false);
166+
cin.tie(0);
167+
int t = 1;
168+
if (is_multitest) cin >> t;
169+
while (t--) solve();
170+
return 0;
171+
}

atcoder/abc043/c.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
n = int(input())
2+
arr = list(map(int, input().split()))
3+
4+
avg = sum(arr) / len(arr)
5+
rounded_avg = round(avg)
6+
7+
total_cost = sum([(x - rounded_avg) ** 2 for x in arr])
8+
print(total_cost)

0 commit comments

Comments
 (0)