
PAT
文章平均质量分 71
文艺清新小码农
SUTD/PhD/NLP
展开
-
PAT Basic Level 1018. 锤子剪刀布(20)
【来源】1018. 锤子剪刀布(20)【分析】解此题时,要求在记录甲乙双方输赢次数的同时,记录下甲乙用三种手势赢的次数。然后比较之后输出。学到的新知识为数组批量初始化为0的快捷方法:int array[10] = {0}【源码】#include using namespace std;int main(){ int n; cin >> n;原创 2014-03-12 16:39:53 · 988 阅读 · 0 评论 -
PAT Basic Level 1003. 我要通过!(20)
【来源】1003. 我要通过!(20)【分析】为了通过得到可爱的红色的答案正确需要满足一定的条件,具体判断时思路如下:若有除了"PAT"以外的字符出现,答案错误;若字符串中有"PAT"字符子串,则看"PAT"前后是否相等且均为空串或仅由'A'构成的字符串,如果是,答案正确,否则,答案错误;若字符串中有'P'和'T'且'P'在'T'前面,那么整个字符串被分为3部分:头、中原创 2014-03-13 15:21:29 · 953 阅读 · 0 评论 -
PAT Basic Level 1010. 一元多项式求导(25)
【来源】1010. 一元多项式求导【分析】模拟数学上多项式求导的过程。需要注意以下几点:输入时没有控制输入结束的标志,因此用getline获取所有输入,然后建立stringstream对象,从中获取数据;输入为常数项是,倒数为0,输出“0 0”即可。【源码】#include #include #include #include using nam原创 2014-03-13 14:15:02 · 1018 阅读 · 0 评论 -
PAT Basic Level 1001. 害死人不偿命的(3n+1)猜想 (15)
【来源】1001. 害死人不偿命的(3n+1)猜想 (15)【分析】while循环实现即可。【代码】#include using namespace std;int main(){ int n; cin >> n; int steps = 0; int m = n; while (m != 1) { if (m % 2 == 0) { m原创 2014-03-13 15:27:44 · 725 阅读 · 0 评论 -
PAT Advanced Level 1073. Scientific Notation (20)
【来源】1073. Scientific Notation (20)【友情链接】PAT Basic Level 1024. 科学计数法(20)原创 2014-03-15 01:17:37 · 807 阅读 · 0 评论 -
PAT Advanced Level 1075. PAT Judge (25)
【来源】1075. PAT Judge (25)【分析】本题模拟的是PAT的评分和排名系统,有一些细节需要注意。【代码】#include #include #include #include using namespace std;struct User{ int id; int scores[5]; int totalscore;原创 2014-03-15 00:10:12 · 1108 阅读 · 0 评论 -
PAT Advanced Level 1074. Reversing Linked List (25)
【来源】1074. Reversing Linked List (25)【友情链接】PAT Basic Level 1025. 反转链表 (25)原创 2014-03-15 01:13:16 · 826 阅读 · 0 评论 -
PAT Advanced Level 1076. Forwards on Weibo (30)
【来源】1076. Forwards on Weibo (30)【分析】本题给出微博用户的关注情况,在假定某一用户的粉丝看到某条微博一定会转发的情况下,求可能被转发的次数。抽象一下就是一个限定了层数的广度优先搜索(BFS)。基本的数据结构是以vector为元素类型的一个vector。该vector的index和用户id相关,index所对应的元素为此id的粉丝们。给定发原创 2014-03-15 00:04:24 · 1573 阅读 · 3 评论 -
PAT Basic Level 1022. D进制的A+B (20)
【分析】此题考察进制转换的相关知识。属于简单题。【代码】#include #include using namespace std;int main(){ int a, b; cin >> a >> b; int d; cin >> d; int c = a+b; if(c == 0){ cout << 0 << endl; } el原创 2014-03-11 22:26:02 · 1071 阅读 · 0 评论 -
PAT练习题概览
更新至 1068 2013-10-08更新至 1072 2013-11-07PAT(pat.zju.edu.cn)是一个面向 C/C++程序的 Online Judge 系统。相比 ZOJ,HDOJ,POJ 等 ACM 题库,PAT 的题目非常基础,对于数据结构、算法的入门是比较有助益的。本文按照自己的认识,给 PAT advanced level 做出了分类。由于很多题目实际转载 2014-04-18 23:25:35 · 875 阅读 · 0 评论 -
PAT Basic Level 1025. 反转链表(25)
【来源】1025. 翻转链表(25)【分析】题目给出一系列链表的节点,要求将链表中每K个节点翻转。最后不到K个元素不反转。和本题类似的题目有:Advanced Level 中的 1052. Linked List Sorting (25),处理的思路是一样的。对这种地址空间较小的题目,通用的做法是开一个大一点的Vector,然后把Vector的index映射为节点的地址。这样处原创 2014-03-11 23:10:11 · 2551 阅读 · 0 评论 -
PAT Advanced Level 1079. Total Sales of Supply Chain (25)
【来源】1079. Total Sales of Supply Chain (25)原创 2014-05-19 19:37:23 · 766 阅读 · 0 评论 -
PAT Advanced Level 1077. Kuchiguse (20)
【来源】1077. Kuchiguse (20)【分析】原创 2014-05-19 19:45:28 · 692 阅读 · 0 评论 -
PAT Advanced Level 1080. Graduate Admission (30)
【来源】原创 2014-05-19 19:31:45 · 669 阅读 · 0 评论 -
PAT Advanced Level 1078. Hashing(25)
【来源】1078. Hashing(25)【分析】暂无,有空来填坑。【代码】原创 2014-05-19 19:40:59 · 734 阅读 · 0 评论 -
PAT Advanced Level 1081. Rational Sum (20)
【来源】1081. Rational Sum (20)【分析】暂略,有空来填坑。【代码】原创 2014-09-08 23:18:18 · 616 阅读 · 0 评论 -
PAT Basic Level 1004. 成绩排名 (20)
【来源】1004. 成绩排名 (20)【分析】建立student结构,把student数据存入vector,利用STL 的sort函数排序后,依次输出即可。【代码】#include #include #include #include using namespace std;struct student{ string name; string原创 2014-03-13 15:01:22 · 777 阅读 · 0 评论 -
PAT Basic Level 1005. 继续(3n+1)猜想 (25)
【来源】1005. 继续(3n+1)猜想 (25)【分析】这道题需要费些脑筋。博主的思路如下:题目要求按照从大到小的顺序输出关键字。首先假定所有数都为“关键数”。然后依次遍历整个数组。若该数为“关键数”,则计算从这个数经过(3n+1)猜想到1的过程中得到的数,若某个数之前被判定为“关键数”,则取消这个数的“关键书”属性。遍历完数组之后,真正的“关键数”便会被筛选出来原创 2014-03-13 14:56:54 · 835 阅读 · 0 评论 -
PAT Basic Level 1006. 换个格式输出整数 (15)
【来源】1006. 换个格式输出整数 (15)【分析】这道题题意很容易理解。处理的时候考虑到给出的整数不超过1000,因此分1、2、3位数分别处理。【代码】#include using namespace std;int main(){ int n; cin >> n; if (n >= 100){ int bai = n原创 2014-03-13 14:42:01 · 729 阅读 · 0 评论 -
PAT Basic Level 1019. 数字黑洞(20)
【来源】1019.数字黑洞(20)【分析】按照题意直接码代码即可。需要注意两点:输出数的时候需要注意不足四位数要用0补齐;注意输入为6174的情况。【源码】#include #include #include using namespace std;string tostring(int n){ string s; if (n < 1原创 2014-03-12 16:26:09 · 1129 阅读 · 0 评论 -
PAT Basic Level 1011. A+B和C(15)
【来源】1011. A+B和C(15)【分析】本题看似简单,需要注意数据的范围为[-231, 231],int类型有可能导致溢出。long long int为64位整数,满足题目要求。【源码】#include using namespace std;int main(){ int n; cin >> n; for (int i = 0;原创 2014-03-12 19:28:17 · 1121 阅读 · 0 评论 -
PAT Basic Level 1023. 组个最小数(20)
【来源】1023. 组个最小数(20)【分析】本题给出0-9各个数字的个数,要组成一个最小数。算法很简单,要注意的是首位不能为零,因此需要先找出最小的非零数字作为首位,然后从小到大排列数字。【代码】#include using namespace std;int main(){ int nums[10]; for(int i = 0; i < 10; ++i原创 2014-03-11 22:37:42 · 906 阅读 · 0 评论 -
PAT Basic Level 1012. 数字分类(20)
【来源】1012. 数字分类(20)【分析】按题目要求分别计算相应的值即可。要足够细心才能通过所有测试点。【源码】#include #include #include using namespace std;int main(){ int n; cin >> n; int* nums = new int[n]; for (int i原创 2014-03-12 19:13:21 · 922 阅读 · 0 评论 -
PAT Basic Level 1015. 德才论(25)
【来源】1015. 德才论(25)【分析】此题本质上是一个排序问题。使用C++ STL中的sort函数并根据题意自定义compare函数即可。在输入的时候将所有考生分成四类:“才德全尽”、“德胜才”、“才德兼亡,但德胜才”,以及剩下的达到及格线的考生。然后各自排序,依次输出即可。需注意使用cin、cout可能会超时。【源码】#include #include #原创 2014-03-12 18:42:11 · 1186 阅读 · 0 评论 -
PAT Basic Level 1020. 月饼(25)
【来源】1020. 月饼(25)【分析】为了获取最大的利润,首先把月饼按照单价从高到低排序,然后依次购买,到满足需求为止。【源码】#include #include #include #include using namespace std;struct mooncake{ double stock; double money;};bo原创 2014-03-12 16:03:18 · 1785 阅读 · 0 评论 -
PAT Basic Level 1017. A除以B(20)
【来源】A除以B(20)【分析】模拟实际除法的过程即可。【源码】#include #include using namespace std;int main(){ string a; int b; cin >> a >> b; string q = ""; int r = 0; for (int i = 0原创 2014-03-12 16:48:22 · 587 阅读 · 0 评论 -
PAT Basic Level 1014. 福尔摩斯的约会(20)
【来源】1014. 福尔摩斯的约会(20)【分析】本题为字符串处理题。根据题意,比较前两个字符串可以得到星期和小时数,比较后面两个字符串可以得到分钟数。需要注意一下几点:理解题意要正确。比如题目中出现的“第2对相同的字符”在程序中不应当直接查找两个字符串中第二对相同的字符,而应当理解为“0-9”、“A-Z”这些对解析有意义的字符。输出时不足两位的小时、分钟要用0补足原创 2014-03-12 18:55:14 · 931 阅读 · 0 评论 -
PAT Basic Level 1013. 数素数(20)
【来源】1013. 数素数(20)【分析】本题要求输出第M个至第N个素数(0思路为先估计第10000个素数的数值P,然后遍历从2到P的数,如果是素数,则计数。如果计数在M和N之间,则输出该数。同时使用一个单独的计数变量统计输出的素数的个数,每10个输出换行。【源码】#include #include using namespace std;bool isPrim原创 2014-03-12 19:07:26 · 915 阅读 · 0 评论 -
PAT Basic Level 1016. 部分A+B (15)
【来源】1016. 部分A+B (15)【分析】【源码】#include #include using namespace std;int main(){ string a, b; char da, db; cin >> a >> da >> b >> db; int numa = 0; int basea = da原创 2014-03-12 18:33:14 · 662 阅读 · 0 评论 -
PAT Basic Level 1002. 写出这个数 (20)
【来源】1002. 写出这个数 (20)【分析】先计算各位数字之和,然后分情况输出即可。【代码】#include #include using namespace std;int main(){ string s; cin >> s; int sum = 0; for (int i = 0; i < s.size(); ++i){ int digit原创 2014-03-13 15:25:06 · 841 阅读 · 0 评论 -
PAT Basic Level 1021. 个位数统计(15)
【分析】考察简单的字符串处理。【代码】#include #include using namespace std;int main(){ string s; cin >> s; int freq[10]; for(int i= 0; i < 10; ++i){ freq[i] = 0; } for(int i = 0; i < s.size();原创 2014-03-11 22:03:05 · 842 阅读 · 2 评论 -
PAT Basic Level 1009. 说反话(20)
【来源】1009. 说反话(20)【分析】getline函数获取整个句子,依此建立stringstream,获取每个单词。每个单词为一个string对象,放到vector中。逆序输出即可。【代码】#include #include #include #include using namespace std;int main(){ vector sent原创 2014-03-13 14:20:37 · 1409 阅读 · 0 评论 -
PAT Basic Level 1008. 数组元素循环右移问题 (20)
【来源】1008. 数组元素循环右移问题 (20)【分析】本题要求在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置。博主刚开始的思路是直接模拟数组循环移动的过程,然后输出最终状态的数组。后来发现过程非常繁琐,经好友提醒,恍然大悟,原来只需要控制输出的东西就行了,管它数组本身有没有真的循环移动了。因此思路如下:移动的位置若为N的整数倍,数组不会发原创 2014-03-13 14:32:49 · 847 阅读 · 0 评论 -
PAT Basic Level 1007. 素数对猜想 (20)
【来源】1007. 素数对猜想 (20)【分析】从2到N遍历所有的相差为2的整数对,判断是否为素数对,计数并输出即可。【代码】#include #include using namespace std;bool isPrime(int n){ if (n < 2){ return false; } if (n == 2){原创 2014-03-13 14:38:37 · 780 阅读 · 0 评论 -
PAT Basic Level 1024. 科学计数法(20)
【来源】1024. 科学计数法【分析】此题给出用科学技术法表示的数,要求输出正常表示的数。为字符串处理题。大致解题思路为从字符串中分别解析出基数的符号、基数的大小、指数的大小、指数的符号,然后以此得到输出。此类题目需要耐心和细心,最好先自己设计一系列的测试样例,然后分情况解析字符串即可。需注意整数输出的时候末尾没有小数点。类似的题目可参考 Advanced level 10原创 2014-03-11 22:49:09 · 1863 阅读 · 2 评论