P8704 [蓝桥杯 2020 省 A1] 填空问题 题解
Bc2_ChickenDreamer · · 题解
P8704 [蓝桥杯 2020 省 A1] 填空问题 题解
problem A
数学题。
这一题跟蜗牛爬井盖相似,我们经过推算后可以发现
答案:
problem B
枚举题。
设
核心代码:
int now, best;
now = n / i + n / 100 * i;
best = n / res + n / 100 * res;
if (now < best)
res = i;
答案:
problem C
典型搜索题。
每一次搜索每批口罩给
核心代码:
void dfs(int step, int x, int y)
{
if (step > 15)//分完了
{
if (abs(x - y) < ans)
ans = abs(x - y);//如小于则更新答案
return;
}
//往下搜索
dfs(step + 1, x + a[step], y);//给 A
dfs(step + 1, x, y + a[step]);//给 B
}
答案:
problem D
dp 题。
我们可以发现每个数要不放在第一行,要不放在第二行,所以我们可以把两种情况讨论。
状态转移方程:
第一行:
第二行:
答案:
problem E
枚举题。
我们可以发现,只要满足是完全平方数和是
核心代码(判断数位):
if ((nn % 10) != 0 && (nn % 10) != 1 && (nn % 10) != 4 && (nn % 10) != 9)
{
f = 0;
break;
}
nn /= 10;
答案:
代码
#include<iostream>
using namespace std;
int main() {
string ans [] = {
"3880", // 双引号中替换为 A 题的答案
"10", // 双引号中替换为 B 题的答案
"2400", // 双引号中替换为 C 题的答案
"1340", // 双引号中替换为 D 题的答案
"1499441040", // 双引号中替换为 E 题的答案
};
char T;
cin >> T;
cout << ans[T - 'A'] << endl;
return 0;
}