PAT乙级题解
文章平均质量分 73
PasserbyQk
越努力 越幸运!
展开
-
pat 乙级 1012. 数字分类 (20)
思路:没什么可讲的 这道题就是码代码 ,根据题意码就行了代码实现: #includeint main() { int m; int a[1005] = { 0 }, b[205] = { 0 }; scanf("%d", &m); for (int i = 0;i<m;i++) { scanf("%d", &a[i]); } int A1=0, count =原创 2017-09-03 21:54:55 · 198 阅读 · 0 评论 -
pat 乙级 1014 福尔摩斯的约会(20)
总结一下读懂题 很重要 !!这道题 一开始 觉得非常简单 然后很快就码出来了代码。 结果一提交 20分的题只得了14分 。然后改了将近一个小时 最后才发现 是格式的问题。最后要求是 HH:MM ;所以 用cout输出 不行 因为 比如 计算结果是 2:30 而输出结果要求 是 02:30所以 要用prin原创 2017-09-04 08:41:54 · 229 阅读 · 0 评论 -
pat 乙级 1013 数素数(20分)
思路:我一开始的思路 就是 找出 前10000万个数组 然后 直接打印即可 ;代码: #include #include #include #include #include #include #include #include #include using name原创 2017-09-04 08:32:37 · 263 阅读 · 0 评论 -
pat 乙级 1016. 部分A+B (15)
代码实现:#include #include int main(){ int i=0,j=0,p=0,k=0; char a[11], b[11]; char da, db; int count1 = 0, count2 = 0; int sum1 = 0, sum2 = 0; int pa=0; int pb=0; scan原创 2017-09-04 14:56:41 · 193 阅读 · 0 评论 -
pat 乙级 1017. A除以B (20)
思路:为了省事 我把 录入的两个数据 直接 用一个字符串保存;gets()录入 ,中间一个空格而已 。代码实现如下:#include#includeint main() { char a[1005],b[1001]; gets(a); int len = strlen(a); int sum = 0,R; int n = a[len-1] - 48;原创 2017-09-04 19:14:59 · 209 阅读 · 0 评论 -
pat 乙级 1018. 锤子剪刀布 (20)
思路: 输入数据 存入 二维数组[2][N]中 然后遍历 数组 进行比较 ,这里的比较方法需要自己定义,比如C(锤子)win J (剪刀)J (剪刀) win B(布)B(布) win C (锤子)建一个 [2][3]的 二维数组 用来存比较结果 分别代表 甲win 甲平 甲lose乙win原创 2017-09-04 19:17:51 · 222 阅读 · 0 评论 -
pat 乙级 1019. 数字黑洞 (20)
易错点: 如果 输入 1000 错误输出 1000 - 0001 = 999 这里要考虑格式的问题 正确输出 1000 - 0001 = 0999所以还是cout 和printf 的格式问题 。我发现 pat乙级20分题目的扣分点 格式自动补零这一块很常见。会经常遇到 这种 %0nd 的输出格式 ,有必要特别注意一点;原创 2017-09-04 19:27:00 · 301 阅读 · 0 评论 -
pat 乙级 1020 吃月饼(25)
总结一下 :(因为涉及到 小数计算 所以 类型 我选择了double)第一次 提交 :测试点3 无论如何都过不去 。最后 发现 忽略 两种情况 :第一 : 所有 库存都满足 不了需求 比如 3 100 1 3 5 10 20 30 需求 100 而三种 月饼 加起来原创 2017-09-04 21:50:45 · 309 阅读 · 0 评论 -
pat 乙级 1022. D进制的A+B (20)
思路 :这里主要提供一个进制转换的方法,挺经典!可以将任意数字转换为0-9以内的任意进制数#include int A,B,D; int sum=0; void test(int m,int k){ if(m/k==0)printf("%d",m); else { test(m/k,k);原创 2017-09-04 22:10:58 · 180 阅读 · 0 评论 -
pat 乙级 1023. 组个最小数 (20)
思路: 由于给出的10 数代表0-9 每个数字的个数 ,所以这里考虑 先找出最小的非0 且个数不为0 的数,先输出 一个 ,其个数减1,然后 把剩余的个数不为0 的数字从小到大依次输出 即可#include #include #include #include #include #include #include #include #include usi原创 2017-09-05 09:03:28 · 229 阅读 · 0 评论 -
pat 乙级 1024. 科学计数法 (20)
一点一点的判断判断 E 后面是+ 还是- ,然后 判断 指数的大小 与E前面数字部分的长度大小 最后判断 第一位是+ 还是- 代码:#include #includeusing namespace std;char b1[10000],b2[10000];int main(){ string s1; cin>>s1; //+1.23原创 2017-09-05 09:10:40 · 224 阅读 · 0 评论 -
pat 乙级 1026. 程序运行时间(15)
主要注意点 : 也就是不足一秒的四舍五入 这里 。 注意 实现的时候加一个判断 #include #include #include #include #include #include #include #include #include using namespace std;int main() { int start,end; ci原创 2017-09-05 10:44:45 · 315 阅读 · 0 评论 -
pat 乙级 1027. 打印沙漏(20)
说一下 这道题的坑点!! 比如 样例 第二行 只有前面有空格 后面是没有空格的 ,我第一次 报格式错误就是 因为后面也加了空格 。后面部分是没有空格的 另外: 如果 判断 一共输出 用了 字符的话 可以这样比如 : 5 3 1 3 5 看成是两个 1 3 5 相加 然后 减去1 即可 。1 3 5 是等差的一列数 这样求和就很容易原创 2017-09-05 18:41:56 · 291 阅读 · 0 评论 -
pat 乙级 1028. 人口普查(20)
需要注意扣分点 只输出有效日期的信息 无效的不参与比较 。如果一个有效的都没有 直接输出 0 测试点3 就是 有效身份日期为0 的情况 代码: #include #include#includeusing namespace std;string str[100005];int year[100005],month[100005],day[1原创 2017-09-05 18:53:10 · 320 阅读 · 0 评论 -
pat 乙级 1029. 旧键盘(20)
思路 : count思想 : 先遍历 第一行 出现过 的 标记为 1 遍历第二行输入 出现过的 标记为0定义数组保存 count 为1 的 遍历输出即可 注意 英文字母只输出大写 。#include#includeint main(){ char s1[82]; char s2[82]; char sout[82]; scanf("原创 2017-09-05 21:14:10 · 238 阅读 · 0 评论 -
pat 乙级 1030. 完美数列(25)
思路如下 :首先p与最小数相乘可能会超出int范围,所以这里用long long int ,当然double 也可以 ,其次我们应该先将数组排序以方便计算,然后我们用双重for循环查找,查找的思路是从第一个元素作为最小数,开始往后找最大数,直到不符合条件,记录下此时的长度,然后将第二个元素作为最小数,再继续找,最后比较长度的最大值并输出,如果是这样子编写,肯定会超时。原创 2017-09-05 21:19:48 · 247 阅读 · 0 评论 -
pat 乙级 1031. 查验身份证(15)
代码:#include using namespace std;int W[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char w[]={'1','0','X','9','8','7','6','5','4','3','2'};int main(){ int N; cin>>N; string s[N]; for (int i=0;原创 2017-09-05 21:24:59 · 222 阅读 · 0 评论 -
pat 乙级 1032. 挖掘机技术哪家强(20)
这个题 基本上挺简单 做的时候没出什么差错。两次就AC,第一次 是b数组开小了 以为百分制所以就开了105,后来提交17分 检查发现 有多少队就有多少分数 所以105远远不够 ,应该和队伍数组保持一致。改了然后AC#include #include#includeusing namespace std;int main(){ int N; cin>>原创 2017-09-06 10:39:57 · 225 阅读 · 0 评论 -
pat 乙级 1033. 旧键盘打字(20)
思路 :定义一个count 数组 下标为ascii码 ; count[]=1 代表 为坏键 遍历第一行输入的 坏键 , 如果是 大写字母 对应的小写字母也要标记为1 ;接着遍历 第二行的 字符, 如果 coun[‘+’]=1 ;即如果 + 坏的话,所有的大写字母都不能输出 。输出所有符合条件的 count[] 不为1 的即可 。代码实原创 2017-09-06 10:52:05 · 261 阅读 · 0 评论 -
pat 乙级 1035. 插入与归并(25)
代码实现:#include #include using namespace std;int cmp(int a, int b) { return a < b;}int main() { int n; cin >> n; int *a = new int [n]; int *b = new int [n]; for (int i原创 2017-09-06 21:13:28 · 224 阅读 · 0 评论 -
pat 乙级 1036. 跟奥巴马一起编程(15)
很有意思的一道题 ,刚开始一看输出格式 就想到了用二维数组来完成,但后来仔细一想,不用也能做 ,而且相对简单一点。代码实现:#include using namespace std;int main(){ int N; char a; cin>>N>>a; for (int i=0;i<N ;i++ ) { cout<<a; } cou原创 2017-09-06 21:15:05 · 192 阅读 · 0 评论 -
pat 乙级 1037. 在霍格沃茨找零钱(20)
思路:如果每个位置上的钱数都一一判断的话 情况太多 ,所以这里不如 把 所给金钱的总和求出来 然后 和相减 之后再求 每个位置上的数;#include using namespace std;int main(){ int a1,b1,c1,a2,b2,c2; scanf("%d.%d.%d %d.%d.%d",&a1,&b1,&c1,&a2,&b2,&原创 2017-09-06 21:20:39 · 224 阅读 · 0 评论 -
pat 乙级 1038. 统计同成绩学生(20)
代码实现::#include using namespace std;int a[100005]={0};int main(int argc, char *argv[]){ int n; cin>>n; int b[105]={0}; for (int j=0;j<n ;j++ ) { cin>>a[j]; } for (int i=0;i<n ;i++原创 2017-09-06 21:23:09 · 249 阅读 · 0 评论 -
pat 乙级 1040. 有几个PAT(25)
代码注释 很详细 : #include #include #include #include #include #include #include #include #include using namespace std;char pat[100005];int dp_p[100005],dp_a[100005],dp_t[100005];int main() {原创 2017-09-06 21:32:54 · 217 阅读 · 0 评论 -
pat 乙级 1034. 有理数四则运算(20)
具体思路见代码:#include #include #include #include #include #include #include #include #include /////////////// 垮掉!!!!!!!!!!! 考虑 超时 问题 !!可以考虑 先化最简分数 。会减少代码的冗余度。 using namespace std;原创 2017-09-06 14:36:44 · 451 阅读 · 0 评论 -
pat 乙级 1025. 反转链表 (25)
目前未解决 9.5 号目标9.10之前解决原创 2017-09-05 10:31:51 · 325 阅读 · 0 评论 -
pat 乙级 1041. 考试座位号(15)
代码实现: #include #include using namespace std;int main(){ int n; scanf("%d", &n); string sno[n]; int test[n], exam[n]; for(int i = 0; i < n; ++i){ cin >> sno[i] >>原创 2017-09-06 21:39:19 · 300 阅读 · 0 评论 -
pat 乙级 1042. 字符统计(20)
思路:创建一个char数组用来存输入的数据然后 定义一个 c 数组 下标为ascii码 内容是出现的次数遍历 char 数组 计算 c 即可 。注意点:char 数组中如果是大写字母 则对应的小写字母的次数加1 ;最后循环遍历c数组 打印下标 和最大值 代码实现: #include #include#in原创 2017-09-06 21:40:41 · 228 阅读 · 0 评论 -
pat 乙级 1043. 输出PATest(20)
思路 : 统计 P A T e s t 这六个字符的个数 依次循环打印 输出一次 次数-1 ;代码实现:#include #include #include #include #include #include #include #include #include using namespace std;char a[100原创 2017-09-06 22:24:39 · 251 阅读 · 0 评论 -
pat 乙级 1044. 火星数字(20)
具体实现 : 见代码 #include #include #include #include #include #include #include #include #include using namespace std;string low[13]={"tret","jan", "feb", "mar", "apr", "may", "jun", "jly"原创 2017-09-07 19:25:56 · 256 阅读 · 0 评论 -
pat 乙级 1039. 到底买不买(20)
具体实现见代码::#include #include #include #include #include #include #include #include #include using namespace std;int main() { char a[1000],b[1000]; int count[200]={0}; // count 系列数原创 2017-09-06 21:27:28 · 216 阅读 · 0 评论 -
pat 乙级 1045. 快速排序(25)
暴力方法 直接遍历 :结果是。。。。。超时!!暴力 在没有任何思路的情况下 是可取的 毕竟 能拿分才是王道。 但是在平时我们还是要力争完美的!非暴力代码:#include #include int a[100000], b[100000], num[100000];using namespace std;int ma原创 2017-09-07 19:57:55 · 185 阅读 · 0 评论 -
pat 乙级 1046. 划拳(15)
题目很简单 简单的计数题 #include using namespace std;int main(){ int n; int sum1=0,sum2=0; cin>>n; int a[n],b[n],c[n],d[n]; for (int i=0;i<n ;i++ ) { cin>>a[i]>>b[i]>>c[i]>>d[i]; } for (int原创 2017-09-07 21:33:31 · 184 阅读 · 0 评论 -
pat 乙级 1047. 编程团体赛(20)
思路见代码:#include #include #include #include #include #include #include #include #include using namespace std;int main() { int N; scanf("%d",&N); int a,b,score,sum[1005]={0};原创 2017-09-07 21:36:04 · 206 阅读 · 0 评论 -
pat 乙级 1048. 数字加密(20)
这道题容易失分点在于 当B的长度小于A的时候 B的前面几位要自动补零之后 再计算 比如 输入 12345 345 这里相当于 输入 12345 00345这是一个失分点 。也是我刚开始没考虑到的地方#include #includeusing namespace std;char A[100],B[100];int main原创 2017-09-07 22:04:47 · 265 阅读 · 0 评论 -
pat 乙级 1049. 数列的片段和(20)
思路: 求各个数列的片段的和 相当于 求出 每个 数出现的次数 然后全部相加 即可 。这里 如果 用双重循环 遍历 肯定炸 超时一定的。这里 类似与 数学的找规律 :可以发现 每个数出现的次数 是有一定规律的,如下 :如{0.1, 0.2, 0.3, 0.4,0.5}(0.1) (0.1, 0.2) (0.1, 0.2,原创 2017-09-07 22:10:25 · 374 阅读 · 0 评论 -
pat 乙级 1050. 螺旋矩阵(25)
#include #include #include #include using namespace std;int func(int N) { int i = sqrt((double)N); while(i >= 1) { if(N % i == 0) return i; i--; } retu原创 2017-09-07 22:18:15 · 235 阅读 · 0 评论 -
pat 乙级 1052. 卖个萌 (20)
第一次提交 :12 分 发生两次段错误:发现原来是我 忽略了 表情数组的长度要大于0 ,如果小于0 直接输出 Are you kidding me ?代码实现: #include #includeusing namespace std;int get (string hand,string a[]){//用于把原创 2017-09-08 08:45:26 · 1549 阅读 · 1 评论 -
pat 乙级 1053. 住房空置率 (20)
1053. 住房空置率 (20)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:原创 2017-09-08 12:38:58 · 277 阅读 · 0 评论 -
pat 乙级 1054. 求平均值 (20)
1054. 求平均值 (20)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输转载 2017-09-08 13:56:41 · 298 阅读 · 0 评论