【AtCoder ABC 105】补题AK
A 小学数学
思路
瞪眼法,答案只能为1或者0,如果不能整除则答案为1代码
#include <bits/stdc++.h>
using namespace std;
#define umap unordered_map
#define cy cout << "Yes" << endl
#define cn cout << "No" << endl
#define ll long long
#define forn(i, l, r) for (int i = l; i <= r; i++)
#define forn_(i, l, r) for (int i = l; i >= r; i--)
#define debug(a) cout << #a << "=" << a << endl;
const int inf = 0x3f3f3f3f;
const int N = 2e5 + 5;
int n, k;
int ans;
int main() {
cin >> n >> k;
if (n % k != 0) ans = 1;
cout << ans;
return 0;
}
B 枚举
思路
数据量这么小,直接开暴,枚举4的个数,如果剩下的还能被7整除,那么就是可以代码
#include <bits/stdc++.h>
using namespace std;
#define umap unordered_map
#define cy cout << "Yes" << endl
#define cn cout << "No" << endl
#define ll long long
#define forn(i, l, r) for (int i = l; i <= r; i++)
#define forn_(i, l, r) for (int i = l; i >= r; i--)
#define debug(a) cout << #a << "=" << a << endl;
const int inf = 0x3f3f3f3f;
const int N = 2e5 + 5;
int n;
int ok = 0;
int main() {
cin >> n;
forn(i, 0, 25) {
if (i * 4 > n) break;
if ((n - i * 4) % 7 == 0) ok = 1;
}
if (ok) cy;
else
cn;
return 0;
}
C 模拟 进制
思路
负2进制,直接模拟二进制即可
代码
#include <bits/stdc++.h>
using namespace std;
#define umap unordered_map
#define cy cout << "Yes" << endl
#define cn cout << "No" << endl
#define ll long long
#define forn(i, l, r) for (int i = l; i <= r; i++)
#define forn_(i, l, r) for (int i = l; i >= r; i--)
#define debug(a) cout << #a << "=" << a << endl;
const int inf = 0x3f3f3f3f;
const int N = 2e5 + 5;
vector<int> v;
int n;
int main() {
cin >> n;
if (n == 0) v.push_back(0);
while (n != 0) {
int res = abs(n % 2);
v.push_back(res);
n = (n - res) / (-2);
}
reverse(v.begin(), v.end());
for (auto i : v) cout << i;
return 0;
}
D 思维 前缀和
思路

注意一开始得把0的计数+1
代码
#include <bits/stdc++.h>
using namespace std;
#define umap unordered_map
#define cy cout << "Yes" << endl
#define cn cout << "No" << endl
#define ll long long
#define forn(i, l, r) for (int i = l; i <= r; i++)
#define forn_(i, l, r) for (int i = l; i >= r; i--)
#define debug(a) cout << #a << "=" << a << endl;
const int inf = 0x3f3f3f3f;
const int N = 2e5 + 5;
ll n, m;
umap<ll, ll> cnt;
ll a[N], s[N];
ll ans;
int main() {
cin >> n >> m;
forn(i, 1, n) cin >> a[i];
cnt[0]++;
forn(i, 1, n) s[i] = s[i - 1] + a[i], s[i] %= m;
forn(i, 1, n) ans += cnt[s[i]]++;
cout << ans;
return 0;
}

浙公网安备 33010602011771号