PAT(B) 101-139-2-2016-09-11 考试总结


(注:本文没有源码,有提供解题思路,最近比较忙,源码我会在后续继续补充)

参加了浙江大学组织的PAT考试,由于是第一次参加,不知道水的深浅,我就报名的是乙级~(主要原因还是担心英语题看不懂.......),结果也不错,全部AC


说说考试经历吧,整个考场就4个人,小地方嘛~每次报名的人都是个位数,也不用担心抢不到座位~。考场提供VC6、DevC++、Eclipse

下午1点半题目准时放出来,登录浏览器就要开始刷题了!!!


1056. 组合数的和(15):看到题目我以为是求排列组合,最先想到的是dfs,还有next_permutation()这个函数,没想到要求挺简单,输入一个数列,任选两个组合成两位数,求所有情况的和。两层循环。


1057. 数零壹(20):做完第一题花了大概5分钟,提交后发现已经有人把第二题AC了,看来乙级里边还确实有高手。第二题没难度,统计一个二进制数的0和1的个数,很快也A掉了


1058. 选择题(20):题目读起来有些绕口,感觉这道题重点考查的是输入输出,这道题我花的时间最长,一直再考虑用什么方式存储答案好。最后采用的想法是如果正确答案是“abcde”,考生提交的答案是"abc",直接比较两个字符串就行了。若相等则考试交的答案正确,否则错误。(因为我AC了,,所以测试数据里没有出现譬如考生提交答案是“edcba”这样的情况)。接着定义一个考生总分的数组、一个题目结构体,包括正确选项、正确选项个数、错误数、题目编号。这道题花了我不少时间,一直有一个段错误的测试点过不去,后来我索性将数组开到2W,就AC了。发现最后一个测试点花了50ms。看来测试数据不少


1059. C语言竞赛(20):这个题目很简单,我刚开始用的模拟,有两个测试点运行超时,后来发现,这是考查散列啊!定义一个stu[10000]数组,下标代表考生编号,数组元素的值代表考生排名,比如测试样例给出的,stu[1111]的含义就是编号为1111的考生排名是1,依次类推,用空间换时间,AC!


1060. 爱丁顿数(25):我考前一直担心最后一题做不出来,这次题目还好点,很简短,就是这题是在说啥意思呢???我读了好几遍,后来理解了“满足有E天骑车超过E英里的最大整数E“这句话。看那个测试样例,为什么输出是6呢?如果是答案是10,意思就是这10个数每个数都要大于10,等于也不行。如果是9,那其中有9个数大于9就行(这9个数可以不连续)........一次类推,发现6是符合条件的,所以最后一题原理就是这个。我的做法是先进行一个排序,从最大的开始统计,直到第一个满足条件的E就停止遍历。提交了两次AC了,有一分是我没考虑到0的情况。


这段时间比较忙,好不容易AC完5个题,考场也不能U盘copy代码,我后续再整理一遍吧。



你可能感兴趣的:(PAT,生活)