CSDN 编程竞赛四十一期题解

竞赛总览

CSDN 编程竞赛四十一期:比赛详情 (csdn.net)

本次竞赛题型与往期不同,出来了一些选择、判断、填空题。但是,也有很多要吐槽的地方:

1、编程题分值设置不合理,只有两道题,第一道题20分,第二道题55分,并且这个55分的题竟然只有3个测试点,测试数据的数量过少。

2、考试时间虽然增加到了五个小时,但是实际上没有太大意义,因为客观题几分钟就可以做完,这意味着两道编程题给了四个小时,之前四道两个小时都足够完成的情况下,四个小时显然过多。而且晚上实在是卷不动了,实际上真正用了五个小时去答题的人并不多。

3、第二道编程题需要参考大量资料才能做出来,但是只要切换页面达到一定次数就会被强制提交。建议将题目所需的内容(背景、描述、相关图片资料等)全部放到题目描述部分。如果确实显示不下,可以做成内部弹窗或多标签的形式,这样就不需要跳出页面了。

还有很多要吐槽的地方,总之这次的用户体验并不是很好,希望C站在这方面能持续进行优化,越做越好。

竞赛题解

题目1、数制转换

由于人类长了十根手指,所以人类的计数最常用的数制就是十进制。但是,计算机中最常用的进制是二进制,因为二进制可以用比较少的物理状态来表示。可是二进制只有0和1两个数字,很容易写得很长,所以也经常使用八进制或十六进制。八进制的数使用0到7八个数字来表示,逢八进一。十六进制的数除了0到9这十个数字以外,还使用A到F这六个字母(A到F分别代表十进制的10到15),一共十六个符号来表示,逢十六进一。请把输入的数字转换为十进制。如果数字中只有0和1,那么就认为是二进制。如果数字中只有0到7,那么就认为是八进制。如果数字中有不止0到7,那么就认为是十六进制。如果出现了0到9、A到F(不区分大小写)之外的字母,那么就请输出“NaN”。

解决这道题目有两个步骤:

1、判断输入数据含有的字符种类,得到进制类型。

2、根据进制类型,将对应进制的输入数据转换为十进制数值。

这道题难度不大,算是本次竞赛的签到题了。

题目2、珠算指令生成器

现代人做两个数的加减法运算,是非常简单的事情:只要在计算器上按出第一个数,再按一下“+”或“-”键,再按出第二个数,最后按一下“=”键,就能够看到运算的结果了。但古代人没有计算器,还好古代中国有算盘这种工具。CSDN的zjg555543同学在博客里给出了珠算加减法用到的口诀表:珠心算口诀表。请你尝试把根据输入数的加减运算生成相应的珠算指令序列,每个指令对应于一句或若干句口诀,并该口诀之前输出其所应用的位置和该口诀所涉及的拨珠次数。个位记为位置0、十位记为位置1、百位记为位置2,以此类推。同样地,十分位记为位置-1,百分位记为位置-2,以此类推。有的口诀只需要拨动一次上珠或下珠,如“一上一”和“五下五”等。有的则需要拨动一次上珠和一次下珠,如“六上六”、“九下九”、“三下五去二”和“八退一还五去三”(“进一”或“退一”是从相邻高位进一或退一,并不需要在该位执行这一口诀时实际拨珠)等。最后,输出总拨珠次数。

这道题目描述过于复杂,并且页面切换次数过多会被强制提交,所以实在无法下手。

猜你喜欢

转载自blog.csdn.net/x1051496412/article/details/129886198