【作业向】程序设计思维与实践 CSP-M2
♔A HRZ的序列
这一题可以先对所有数进行遍历,求出最大和最小值,然后再次遍历,对于每个数ai判断ai是否等于最大值或最小值,ai-最小值是否等于最大值-ai,若都不符合则不满足条件,输出NO,跳出循环。
1 |
|
♔B HRZ学英语
这一题可以用尺取法来做,从第一个字符开始,若区间中的不同的字母的数量+?的数量等于26时进行输出,输出时若遇到?,为了保证字典序最小则从A开始向后查询第一个没有出现过的字母,标记并输出。若区间中的不同的字母的数量+?的数量小于26且下一个字符为?或没出现过时,右边的标记右移一位,并对字符数量作相应的修改;当下一个字符出现过时,则左边的标记右移,直到移出了下一个字母为止。当左右标记均大于字符串的长度时若还未输出,则输出-1
(又及:模拟考试时结束的边界条件没写好导致才得了40分😭,下次一定注意
1 |
|
♔C 咕咕东的奇妙序列
这一题就比较麻烦了,首先要预处理出1到9、1到99、1到999、1到9999。。。的长度,然后处理出第9组,第99组,第999组。。。的长度。然后读入q,先判断q在pow(10,n)-1组到pow(10,n+1)-1组之间,然后通过二分找到具体的组数。然后通过循环判断在该组的第几位,然后确定出具体的数字并输出。
这一题的细节的地方还是蛮多的,坑点也有,比如用c++自带的pow函数会出问题,只好自己写了一个,这还是蛮锻炼代码能力和思维能力的。
1 |
|