第十一届蓝桥杯大赛软件类决赛 C++ B组 题解


试题 A: 美丽的 2

本题总分:5

我的答案:563,水题暴力循环即可

【问题描述】

小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。

他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中 包含数字 2/span>

 

试题 B: 扩散

本题总分: 5

等待大神认领

  【问题描述】 小蓝在一张无限大的特殊画布上作画。 这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。 小蓝在画布上首先点了一下几个点:(0 , 0) , (2020 , 11) , (11 , 14) , (2000 , 2000) 。 只有这几个格子上有黑色,其它位置都是白色的。 每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色 (如果原来就是黑色,则还是黑色)。 请问,经过 2020 分钟后,画布上有多少个格子是黑色的。        

试题 C: 阶乘约数

我的答案:883423532389192164791648750371459257913741948437809479060803100646309888

我的思路是先求出1到100所有数的质因子,共239个,然后C(0,239)+C(1,239)+C(2,239)+…+C(238,239)+C(239,239) 就等于2的239次

本题总分: 10 【问题描述】 定义阶乘 n ! = 1 × 2 × 3 × · · · × n 请问 100! 100 的阶乘)有多少个约数。  

 

       

试题 D: 本质上升序列

本题总分:10

???????等待大神认领

  【问题描述】 小蓝特别喜欢单调递增的事物。在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺 序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。 例如,在字符串 lanqiao 中,如果取出字符 n q ,则 nq 组成一个单 调递增子序列。类似的单调递增子序列还有 lnq i ano 等等。 小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第 二个字符和最后一个字符可以取到 ao ,取最后两个字符也可以取到 ao 。小蓝 认为他们并没有本质不同。 对于一个字符串,小蓝想知道,本质不同的递增子序列有多少个 例如,对于字符串 lanqiao ,本质不同的递增子序列有 21 个。它们分别 是 l a n q i o ln an lq aq nq ai lo ao no io lnq 、 anq、 lno ano aio 请问对于以下字符串(共 200 个小写英文字母,分四行显示) tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhf iadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqij gihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmad vrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl 本质不同的递增子序列有多少个/span>          

试题 E: 玩具蛇

我的答案:604,从每一个点开始深搜,搜到给标记,退回还原标记,16个点结果相加就是604

本题总分:15 【问题描述】 小蓝有一条玩具蛇,一共有 16 节,上面标着数字 1 16 。每一节都是一 个正方形的形状。相邻的两节可以成直线或者成 90 度角。 小蓝还有一个 4 × 4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着 字母 A P 16 个字母。 小蓝可以折叠自己的玩具蛇放到盒子里面。他发现,有很多种方案可以将 玩具蛇放进去。 下图给出了两种方案:


  1. int a[5][5];
  2. bool b[5][5];
  3. int ans = 0;
  4. void init() {
  5. for (int i = 0; i 5; i++) {
  6. for (int j = 0; j 5; j++) {
  7. a[i][j] = 0;
  8. b[i][j] = false;
  9. }
  10. }
  11. }
  12. void dfs(int x, int y, int num) {
  13. if (x 0 || x >3 || y 0 || y > 3) return;
  14. if (b[x][y]) return;
  15. if (num == 16) {
  16. ans++;
  17. return;
  18. }
  19. b[x][y] = true;
  20. dfs(x, y + 1, num + 1);
  21. dfs(x, y - 1, num + 1);
  22. dfs(x + 1, y, num + 1);
  23. 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月12日
下一篇 2020年10月12日

相关推荐