PAT(乙级)各题错点记录

为自己二刷PAT记录错点,防止重复失误,以及提高找bug和分析问题的能力

B1003.我要通过!

  1. 自己所用方法:无,没想出
  2. 错点:没有看懂题目中第2、第3个条件
  3. 学到了:
    1)注意解读题中信息,得出P和T各只有一个且P在T左边这个定义;学会总结规律。
    2)晴:注意先scanf后getline输入必须先用getchar回收回车符;用三个参数x、y、z分别记录P前的A数、P和T之间的A数、T后的A数;遍历字符串得到P和T的位置,用两个参数存放,并由此求得x、y、z参数的值;注意判断NO和判断YES的条件。
    3)柳:中间的A数 * 开头的A数 = 结尾的A数;且当中间的A数为1时,开头和末尾的A数相同刚好为第二个条件的判断标准。

B1007.素数对猜想

  1. 自己所用方法:又是很常规的套素数模板,没啥好说的啦
  2. 错点:
    1)写的时候有想Find_Prime函数里i和j是< N还是 <= N,第一次提交< N有一个测试点没过,2分,改成<=之后AC了。
  3. 学到了:木有什么啦

B1008.数组元素循环右移问题
5. 自己所用方法:
1)用了很狡黠的写法(算是我为数不多能打得过算法笔记的代码),原数组不动,直接按需要的最终结果输出,也即先输出后N-M到N-1位,再输出前0到N-M-1位。
6. 错点:这次无。(写此题时发现以前写过一次,以前的错点是没想到m要%n)。
7. 学到了:
1)晴:算法笔记把这题归类为“最小公倍数与最大公约数”,然而书上为了体现用到了这个知识点,那个推导过程好长感觉方法有点麻烦。。。就没看了(以后万一不会考到这样的吧。。辣我就%#@&*…)
2)柳:很简洁(而且柳神把这题归类为“模拟”??),用三次数组倒置,利用algorithm头文件下reverse函数,第一次0到N-1,第二次0到M-1,第三次M到N-1 ,注意写到reverse里时要写成前闭后开,即0到N,0到M,M到N。

B1013.数素数

  1. 自己所用方法:直接用算法笔记上的模板。但有一个测试点没有通过,这个点是1分。
  2. 错点:
    1)测试点没有通过的问题在于maxn设小了。
  3. 学到了:
    1)晴:①由于第10000个素数不知道有多大,因此要将maxn设大一点,设为1000001;②要注意1不是素数。

B1019.数字黑洞

  1. 自己所用方法:输入字符串、字符串和整型数互相转换
  2. 错点:
    1)写出的代码不支持输入的数不是4位数的情况(比如输入53应输出5300 - 0035 = 5265);
    2)不支持输入直接为6174的情况(要输出7641 - 1467 = 6174);
    3)而且多了很多繁琐步骤;
    4)并且没看懂题目说的0是结果为0的时候也要停止。
  3. 学到了:
    1)用do-while!
    2)漫:可以用ssprintf和sscanf转换字符串和整型数
    3)晴:整形数组和整型数相互转换的方法,用printf和"%04d"输出
    3)柳:用string,涉及到string的函数insert()(输入后先在前面补0再计算)、stoi()(string转整数)

B1034.
(见A1088)

B1049.数列的片段和
(见A1104)

模板:

  1. 自己所用方法:
  2. 错点:
  3. 学到了:

你可能感兴趣的:(算法)