【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进制,直接模拟二进制即可

image

代码
#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 思维 前缀和

思路

image
注意一开始得把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;
}
posted @ 2023-11-27 14:44  史上最速败犬  阅读(15)  评论(0)    收藏  举报