- MysGln 的博客
7月13日课程笔记(晰晰)
- @ 2026-7-13 10:24:26
百鸡问题 / 优化解
- 通过直接枚举 (i, j, k) 方案数 + 判定的方式解决
- 注意下取整的细节 k/z
#include <bits/stdc++.h>
using namespace std;
int main() {
int x, y, z, n, m;
cin >> x >> y >> z >> n >> m;
// 方案组成 (i, j, k) 分别表示公鸡、母鸡、小鸡的数量
int cnt = 0;
for (int i = 0; i <= m; i++) {
for (int j = 0; j <= m - i; j++) {
int k = m - i - j;
if (k % z == 0 && i * x + j * y + k / z == n) {
++cnt;
}
}
}
cout << cnt << endl;
return 0;
}
勾股数问题
- 掌握判断完全平方数的方法
- 开方后的平方依然相等自身
int cc = a * a + b * b;
int c = sqrt(cc); // 如果不是整数会向下取整数
if (c * c == cc) {
cout << "Yes" << endl;
}
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, cnt = 0;
cin >> n;
for (int a = 1; a <= n; a++) {
for (int b = a; b <= n; b++) {
int c = sqrt(a*a+b*b);
int cc = a * a + b * b;
if (c * c == cc && cc <= n * n) {
cnt++;
// cout << a*a << " " << b*b << " " << cc << endl;
}
}
}
cout << cnt;
return 0;
}