Codeforces Round 964 (Div. 4)

你说得太对辣發表於2024-08-13
### A.

```c++
#include<bits/stdc++.h>
using namespace std;

const int N = 1e6 + 7;
void solve() {
int x;
cin >> x;
cout << x / 10 + x % 10 << endl;
}
int main() {
int T;
cin >> T;
while(T --) solve();
}
```

### B.
四種情況分類討論
```c++
#include<bits/stdc++.h>
using namespace std;

const int N = 1e6 + 7;
void solve() {
int a1, a2, b1, b2;
cin >> a1 >> a2 >> b1 >> b2;
int cnt = 0;
if(a1 > b1 && a2 >= b2) cnt ++;
if(a2 > b1 && a1 >= b2) cnt ++;
if(a1 > b2 && a2 >= b1) cnt ++;
if(a2 > b2 && a1 >= b1) cnt ++;
cout << cnt << endl;
}
int main() {
int T;
cin >> T;
while(T --) solve();
}
```

### C.


### F.



設當前有 $p_0$ 個 0 和 $p_1$ 個 1,答案即為 $\sum_{i=0}^{\frac{k+1}{2}} \binom{p_0}{i} \binom{p_1}{k-i}$。

```c++
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e6 + 7;
const int mod = 1e9 + 7;
int p[N];
int inv[N], uinv[N];
int getc(int a, int b) {
if(a < b || b < 0) return 0;
return inv[a] % mod * uinv[b] % mod * uinv[a - b] % mod;
}
void solve() {
int p1 = 0, p0 = 0;
int n, k;
cin >> n >> k;
for(int i = 1; i <= n; i ++) cin >> p[i];
for(int i = 1; i <= n; i ++) {
if(p[i]) p1 ++;
else p0 ++;
}
int ans = 0;
for(int i = 0; i < (k + 1) / 2; i ++) {
ans += getc(p0, i) % mod * getc(p1, k - i) % mod;
ans %= mod;
}
cout << ans % mod << endl;
}
int qpow(int a, int b) {
int res = 1;
while(b) {
if(b & 1) res = res * a % mod;
b >>= 1;
a = a * a % mod;
}
return res % mod;
}
signed main() {
inv[0] = 1;
for(int i = 1; i < N; i ++) inv[i] = inv[i - 1] * i % mod;
uinv[N - 1] = qpow(inv[N - 1], mod - 2);
for(int i = N - 1; i >= 1; i --) uinv[i - 1] = uinv[i] * i % mod;
int T;
cin >> T;
while(T --) solve();
}
```

相關文章