PAT(basic level)题解

来源:互联网 发布:ups监控软件型号 编辑:程序博客网 时间:2024/05/17 22:25

做完PAT,最大的感受就是,自己写的代码不够健壮,很少有一次通过的。面对有些测试点通不过真是欲哭无泪啊。。另外做完这套题能夯实基础,还是不错的。代码就不贴上来了,只对一些关键点及易错信息,说一下我的看法,希望能够帮到有时束手无策的你。


1. 这道题没什么,把算法实现一下就好了。

2.输入是一个很大的数,用字符串的方式读,用于读取的字符数组最少101字节,然后把各位数字加起来,再用拼音输出。

3.这道题很容易没有完全理解。要注意aPbTc正确则aPbATca正确的递推关系(a与c是一样的字符串,由xPATx知),这里b至少是一个A的字符串,aPATc(不妨写成aPATa),可推出->aPAATaa->aPAAATaaa...即T后面a的个数为P前面的a乘以中间A的个数,a为A的字符串,可以为空。

4.这也是一道基本题。

5.用两个数组,一个保存输入,另一个保存输出的关键数。第一个输入可以直接作为输出,然后把每一个输入与输出里的所有元素比较,如果被输出覆盖则跳过读下一个输出,如果能覆盖输出,则替换输出(不需要与为比较的关键数比较,绝对不会覆盖或被覆盖,由关键数的定义可得)。

6.这道题也很基本,当时我在想出现0该怎么处理,题目没说,后来我也没处理,稀里糊涂的通过了。

7.这道题在判断一个数是否是素数时要注意,如果是用n/2作为循环边界则很容易运行超时,可以用sqrt(n)作为边间,这样就Ok啦。

8.这道题用数组读入后,可以不要移动数组的内容,而是控制下标的移动,另外,移动的次数对数组长度求余,可以少运算。

9.可以用二元字符数组读取输入,然后反序输出。

10.实现求导的过程很简单,但这里有个大坑。常数求导后为0。如果只有常数项,则求导后要输出“0 0”,如果不只常数项,则输出不要“0 0”,对输出要处理。很容易出错。

11.这道题要注意的是,因为输入是32bit的整数,所以和应该用long int表示否则会溢出。

12.很常规的一道题。

13.同样判断素数的时候要用sqrt。

14.按照解密的规则解密就好了,实现细节要注意,如果对一组字符串已经把信息都获取出了应该终止对字符串的解密过程。

15.这道题要实现的话,要注意细节。另外实现之后要注意效率。如果是用一般的冒泡、选择或插入排序,则对大量的输入数据很容易运行超时,要用快排序。先可以统计4中合格的数量,后面排序可以用。我建议先做一个粗略的筛选,先把才德全尽的人交换到数组的最前面(不用排序),然后把德胜才的人交换到后面,再把德才兼亡但德胜才的人交换到后面,最后把合格的人交换到后面,最后面是不合格的人。再对四段分别用快排序(统计的数量这时就用上了)。

16.这道题也挺常规的。

17.被除数用字符串读入,然后仿真除法的过程,数字字符串逐位移动。

18.这道题要统计的信息比较多,有每个人每个手势赢的次数,每个人总共的输赢和次数。

19.输入可能是不满4位的整数,所以每个用数字可以用长度为4的字符数组对应一下,方便输出,以及按非减和非增的方式排列。

20.这题很常规。


只是一些思路,仅供参考,只有自己实现了,才会有所长进。

*要注意的是,每道题都给了比如数字大小范围,最多输入个数,在写程序时要确保范围能够包括到。

*每个main函数要有返回值。

*本人在gcc下编译

0 0
原创粉丝点击