为自己二刷PAT记录错点,防止重复失误,以及提高找bug和分析问题的能力
A1008.Elevator
- 自己所用方法:直接方法。
- 错点:
1)犯了个傻。。。一行输入了4个数就忘记前面第一个数是N了,是看分行输入看习惯了。。。结果算样例数据算了好久都不对,算不出41,这样的错误简直不要再犯了。。。 - 学到了:
1)柳:一个新写法——while处的判断也用cin>>a
。在前面接收N时用cin>>a(相当于这个N接收的无用),这样当没有输入时while可自动中断循环。
A1015.Reversible Primes
- 自己所用方法:进制转换 + 素数,常规模板处理。唯一要注意的是逆置P进制转换成十进制时写对了但有点自己把自己绕晕了:是十进制转成P进制后,
低位存在z数组第一位
,所以逆置就是从高位开始算,则才从后往前算,如23的二进制是10111
,但z数组里存的是11101
,刚好是逆序,就从后面开始算得到29。 - 错点:
1)进制转换忘了。。又去看了相关部分的书才写出。
2)第一次提交一个测试点没过,看完书发现是输入1也要判No(以后要记得bool数组p的p[1]值要设为false了),修改之后AC了。 - 学到了:
1)输入1要判No
;
2)可以用if-else,if判N是否为素数,若不是则直接输出No,是的话就else处理逆置的数。
A1049.Counting Ones
- 自己所用方法:想尝试计算1-10、11-20、21-30…91-100中各出现的1数,为21。然后从101-200则为(21-1)+100,从201-300为(21-1),…再然后1-1000中出现的1数为以上总合,1001-2000也依次计算…但做着做着不知道规范应该设在哪,觉得这个方法肯定有问题,绕来绕去(也是对自己不行非常肯定),就去看解析了。
- 错点:
1)无巧妙思路。且总结归纳出的式子一开始无法理解,单步跟了一遍才懂。感觉想从一个案例总结出这样的式子,让我自己来不太可能。。。 - 学到了:
1)晴:此题用把当前位now
设为1并判断左右数据left、right
的可取范围(要保证小于N)的方法来计算1的个数。并设置一个变量a
来辅助计算各left、now、right的值。
A1059.Prime Factors(写了结果没保存,第二次做再写吧)
<