P8679 题解
qinxuekai
·
2023-10-18 23:58:24
·
题解
题目传送门
A
这很明显是要 DFS,数字也不大,所以无需写程序,在演算纸上简单计算就能算出答案。
答案:490。
B
这道题也无需大量程序,由于 2019 较小,所以用简单程序或直接用计算器进行一系列简单计算即可:
首先先算 2019\div26 ,算出的差是 77.653846153846153846153846153846 。
先看差的小数部分(即 0.653846153846153846153846153846 ),将小数部分乘 26 ,算出的结果是 17 ,又因为字母表中第 17 个字母是Q,所以答案最后一位就是q。
再将 77.653846153846153846153846153846 的整数部分(即 77 )除 26 再用小数部分乘 26 ,结果是 25 ,字母表中第 25 个字母是Y,所以答案倒数第二个字母是Y。
由于 77\div2 的整数部分已经小于 26 ,所以不用重复上面操作,可得倒数第三个字母也就是第一个字母为字母表中第二个字母B。
综上,答案为BYQ.
C
这道题和斐波那契数列差不多,暴力即可。
#include <iostream>
using namespace std;
int main(){
long long a=1,b=1,c=1,num=0;
for(int i=4;i<=20190324;i++) {
num=(a+b+c)%10000;
c=b;b=a;a=num;
}
cout<<num<<endl;
return 0;
}
输出结果:4659。
D
由于题目中要求三个数的和是固定的数,那么其实没有必要进行三层循环,只需要进行两层循环就行,因为只要确定了两个数,第三个数就已经确定了。在判断该数中是否含有数字 2 和 4 的时候,可以事先先对从
代码:
```cpp
#include<iostream>
using namespace std;
int matching[2020] = {0};
int chazhao(int n){
while(n){
if(n%10==2||n%10==4)
return false;
n/=10;
}
return true;
}
int main() {
int i,sum = 0;
for (i=0; i<2020;i++){
if(chazhao(i))matching[i]=1;
}
int a,b,c;
for (a=1; a<2019;a++) {
for (b=a+1;b<2019-a;b++) {
c=2019-a-b;
if(a<b&&b<c&&matching[a]&&matching[b]&&matching[c]&&c>0)sum++;
}
}
cout<<sum<<endl;
return 0;
}
```
答案:`40785`。
# E
这道题其实有个简单的方法,无需程序,但需要一定的水平。
方法:
第一步需要将迷宫复制粘贴进 txt 里,然后将 $0$ 和 $1$ 分别替换为“(Tab)$0$”和“(Tab) $1$”。
(Tab)注:在 txt 里敲入 Tab,即可显示一段空白,复制下来就好。
如图所示:

替换完后是这个样子的:

然后将 txt 中的内容粘到 Excel 中,就成了下图:

将表格中 $1$ 的底色替换为其他颜色,同理也可以将 $0$ 替换成空格,目的都是为了便于识别。
效果:

在截图用画图打开,就能用笔走迷宫了!
无需很多时间,我就只用了二十分钟。
答案:

答案即`DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR`。
# 最终答案:
```
#include<iostream>
using namespace std;
int main() {
string ans [] = {
"490", // 双引号中替换为 A 题的答案
"BYQ", // 双引号中替换为 B 题的答案
"4659", // 双引号中替换为 C 题的答案
"40785", // 双引号中替换为 D 题的答案
"DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR", // 双引号中替换为 E 题的答案
};
char T;
cin >> T;
cout << ans[T - 'A'] << endl;
return 0;
}
```