PAT 乙级 20 分题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/supertian007/article/details/79851799
  • 1002 写出这个数 (20)

用 string 配合 vector 比较方便。
hash 思想。

  • 1003 我要通过!(20)

一个正确的字符串,首先,必须要有 PAT 三个字母,并且,无论按照规则怎么扩展,P和T都只有一个,剩下的字母必须都是A,然后计算P左边,PT之间,T右边的A的个数。如果PT之间的A个数大于1,通过规则来削减。最后可以根据规则2来判断这个字符串是否合法。

  • 1004 成绩排名 (20)

这个题用 string 可以方便解决。送分题。

  • 1007 素数对猜想 (20)

我对打素数表很害怕。这点需要尽快补上。

我看到这个题的时候有点怕。判断素数虽然简单,但素数表的打法我总是记了又忘。但这题不需要打表,直接单个判断就行。

  • 1008 数组元素循环右移问题 (20)

循环问题首先要考虑的就是对长度求模。

这里的循环右移说不许用数组,于是我想起来可以直接输出结果,连移动都不需要。

  • 1009 说反话 (20)

vector 送分题

  • 1012 数字分类 (20)

算第二个分类的时候要注意不能根据值来判断,因为交错相加的结果可能小于等于 0,所以只能用 flag 变量来观察是否执行过。

  • 1013 数素数 (20)

筛法。判断数字是否为素数的时候,数组可以开 20万,因为第 10000 个素数大概是 10万多。而存放素数的数组,在填数字的时候,需要控制大小,免得数组越界

  • 1014 福尔摩斯的约会 (20)

这题题意很重要。

第一次是判断大写字母,范围是 A 到 G。
第二次是数字和大写字母,范围是 0-9 和 A 到 N。
第三次是大写和小写字母。

另外,我在第二次判断的时候忘了加 break,导致测试点 2 没过。

  • 1017 A除以B (20)

大数除法。套路题。先转换,再做普通除法。

测试点 1 没过。因为没考虑 a < b 的情况,比如 6 / 8,应该输出 0 ,6。

  • 1018 锤子剪刀布 (20)

这题的判断做的好累啊。但题目还是送分的。

  • 1019 数字黑洞 (20)

这题逻辑比较简单,但是传参数麻烦一点,我用的是全局数组,省的传参了。先把数字转为数组,接着排序输出,排序输出,把数组转为数字,计算结果,输出。如果不跳出循环,接着把数字转成数组。

  • 1022 D进制的A+B (20)

测试点3出了问题。因为是非负,没有考虑到 a+b=0 的情况。

  • 1023 组个最小数 (20)

    送。

  • 1024 科学计数法 (20)

这题模拟的挺麻烦的,主要就是要确定几个数据,指数大小,小数长度,数字正负,指数正负。

  • 1027 打印沙漏(20)

这题我在团体天梯里又碰到了,卡了我很久,提交以后测试点1,4又格式错误。

搜了题解才知道,这种输出是错误的(用?表示空格):

19 *
*****
?***?
??*??
?***?
*****
2

而是应该要这种输出:

19 *
*****
?***
??*
?***
*****
2

打印的话就是把漏斗当成两个三角形处理了。

  • 1028 人口普查(20)

这题测试点 3,是最终结果为 0。这时候只要输出 0 即可。

我用 a,b,c分别表示年月日,然后a*365+b*30+c,基本可以唯一代表一个日期。(但也不一定,万一 b1=7,c1=1,b2=8,c2=31,就会出问题了,但这题没有这样的数据)。

但我犯了更大的失误,把 b*30 写成了 b+30,导致最后一个测试点没过。。
- 1029 旧键盘(20)

送分题。

  • 1032 挖掘机技术哪家强(20)

送分题。

  • 1033 旧键盘打字(20)

送分题。

但问题会出在输入上。一个小的总结:如果输入是单行字符串,为了稳妥起见(比如有可能啥也不输入),用 gets() 函数来接收。因为 scanf() 会跳过空格。

  • 1034 有理数四则运算(20)

测试点 2,3错误。

因为这题虽然说输出不超过整数范围,但中间步骤里有乘法,可能会超出范围,所以要用 long long。而且不论是 gcd,还是存放中间结果,都要用。如果中间用了 int,就会导致测试点 2,3错误。

  • 1037 在霍格沃茨找零钱(20)

送分题。

  • 1038 统计同成绩学生(20)

送分题。

  • 1039 到底买不买(20)

测试点 0,1,2 错误。

int cnt[128] 用来记录每个颜色的个数。大于 0 的个数加一起,小于 0 的个数加一起。

  • 1042 字符统计(20)

送分题。

  • 1043 输出PATest(20)

计数送分题。

  • 1044 火星数字(20)

复制粘贴字符串的时候注意不要多出来空格。

  • 1047 编程团体赛(20)

送分题。

  • 1048 数字加密(20)

测试点2,5出错。

在计算的时候把字符 0,写成了数字 0。

  • 1049 数列的片段和(20)

这题虽然我做过,是个找规律的题。但我再做的时候还是推理不出来规律。

这个博客的解释我终于看懂了。

比如 6 个数字,1,2,3,4,5,6.

1 的右边有 5 个数字,算他自己就是 6 个。
2 的右边有 4 个数字,算他自己就是 5 个,但这5个,都可以带上左边的 1。所以有 5 * 2 个
3 的右边有 3 个数字,算他自己就是 4 个。然后带上左边的 2,1.就是 4 * 3 个。
4 的右边有 2 个,算他自己是 3 个。带上左边 3 个,就是 4 * 3 个。
5 的右边有 1 个,算他自己是 2 个。带上左边 4 个,就是 2 * 5 个。
6 的右边有 0 个,算他自己是 1 个。带上左边的 5 个,就是 6 * 1 个。

所以对于 n 个数字,每一项的次数为 (n-i+1) * i。(i 从 1 开始算。)

还有个问题就是看到 10^5,并且过程中有乘法,有可能越界,所以需要先乘以浮点数,再做整数的乘法。

否则测试点 2,3 过不了。

  • 1052 卖个萌 (20)

这题也不太难算,就是对 string 和 char[] 的使用有点要求。用 string 保存 char[]。

  • 1053 住房空置率 (20)

这个题我第一次一直做不对。看了别人的题解才知道我理解错了题意。

空置的判断条件是:k>d,而不是空置的天数>d。

另外就是输出%,用的是 %%

  • 1054 求平均值 (20)

测试点 2 有段错误。我给每个数组开了 char num[10] 的数组。

改成 num[100] 后,段错误变为了答案错误。

原来是在最终数据只有一个的时候,输出里面的 numbers 要改为 number。

  • 1057 数零壹(20)

又是 hash 计数的送分题。

  • 1058 选择题(20)

测试点 1 没过。因为没有人答错这点忘了写了。

  • 1059 C语言竞赛(20)

又是一个 hash 送分题。

  • 1062 最简分数(20)

测试点 2 没过。

虽然他说给出的所有证书不超过 1000。但是我在做三个分母相乘的时候应该越界了,但 10^9 应该不越界吧。后来改成两个分母相乘,测试点 2 就过了。

  • 1063 计算谱半径(20)

这是真的在送分。

  • 1064 朋友数(20)

送分。

  • 1067 试密码(20)

测试点2、5出错。

题目说的是,正确的密码中间没有空格,没说尝试的密码没有。而且案例二的 try again 密码,已经表现出有空格了。所以读取密码的时候要用 gets()。

  • 1068 万绿丛中一点红(20)

这里之前一个条件没注意,就是这个点必须首先是唯一的,然后再看和周围的点的差的绝对值。并且最外面一圈假设为和 0 比。

  • 1069 微博转发抽奖(20)

map 的简单用法。主要是查找:mm.find(str) == mm.end() 表示找不到。

  • 1072 开学寄语(20)

测试点 2 错误。因为输出的时候前导0忘了写了。

  • 1073 多选题常见计分法(20)

这个题,错误的选项有两种情况:应该选的没选,那没选的就要计数。不该选的选了,那选了的就应该计数。

比如一个题答案是 A,选了 B C。那 A B C都要计数为 1。

  • 1074 宇宙无敌加法器(20)

最后输出的时候要去掉前导0.如果只有一个0,就输出0.

  • 1077 互评成绩计算 (20)

round() 函数四舍五入,用变量保存结果,否则会输出奇怪的结果。

  • 1078 字符串压缩与解压 (20)

测试点2 格式错误。
测试点3 答案错误。

读入字母C/D的时候,我开始用 scanf(“%c\n”,&c);

后来改为 scanf(“%c”,&c);getchar();

就通过了。

  • 1079 延迟的回文数 (20)

第一次没通过是因为输出的末尾有个点,没有输出。

  • 1082 射击比赛 (20)

送分题。

  • 1083 是否存在相等的差 (20)

hash 计数送分题。

  • 1084 外观数列 (20)

这题字符串变量的复制挺麻烦的。我是用 string 来存储 char[]。

猜你喜欢

转载自blog.csdn.net/supertian007/article/details/79851799
今日推荐