PAT
pat刷题~~
52Tiramisu
这个作者很懒,什么都没留下…
展开
-
PAT A1019 General Palindromic Number
题目大意:十进制数字N在b进制下是否为 回文数思路:先转换为对应的b进制数字,从前往后对比对应的数字,如果都相同则就是回文数字。很简单!题目读不懂,就读示例代码:// 0220-1615// 判断b进制下的N是否为回文数#include <cstdio>int main() { freopen("in1.txt", "r", stdin); int n, b; scanf("%d%d", &n, &b); int z[40], pNum =原创 2022-02-20 16:36:50 · 340 阅读 · 0 评论 -
freopen解决oj手动输入的问题
在程序的开头添加如下代码,并在同路径下添加该文本文件即可。freopen("in.txt", "r", stdin);原创 2021-06-30 12:49:10 · 187 阅读 · 0 评论 -
Chapter3 入门篇(1)
B1001 (3n+1)猜想 15 B1011 A+B和C 15 B1016 部分A+B 15 B1026 程序运行时间 15 ...原创 2021-06-23 11:27:59 · 70 阅读 · 0 评论 -
递推
如果要求出 dp[i][j],那么一定要先求出它的两个子问题:①从位置(i+1, j) 到达最底层的最大和 dp[i+1][j];②从位置(i+1, j+1) 到达最底层的最大和 dp[i+1][j+1]。状态转移方程把状态 dp[i][j] 转移为dp[i+1][j] 和dp[i+1][j+1]边界:最后一层的dp值总是等于元素本身。从这些边界出发,通过状态转移方程扩散到整个 dp数组。数塔问题// 03.16 10:00-12:00#inclu...原创 2021-03-16 11:56:43 · 82 阅读 · 0 评论 -
20秋季 7-3 Left-View of Binary Tree (25 分)
题目大意:给定中序和先序,输出left-view,其实就是输出层序遍历,每层输出一个即可。类似题目:A1020思路:①构建树;②层序遍历树。#include <iostream>#include <queue>#include <algorithm>using namespace std;const int maxn = 25;int in[maxn], pre[maxn];struct node { int data; int la原创 2021-03-12 23:18:08 · 77 阅读 · 0 评论 -
20年秋季 7-1 Panda and PP Milk (20 分)
7-1 Panda and PP Milk (20 分)PP milk (盆盆奶)is Pandas' favorite. They would line up to enjoy it as show in the picture. On the other hand, they could drink in peace only if they believe that the amount of PP milk is fairly distributed, that is, fatter pan原创 2021-03-12 18:16:58 · 402 阅读 · 0 评论 -
20冬季 7-2 Subsequence in Substring (25point(s))
思路:用两个指针,分别指向母串和子串,然后依次从母串遍历,遍历的时候和子串比较。设置一个最小长度和存储对应最小长度的字符串ans。// 03.12 11:00#include <iostream>#include <cstring>#include <string>#include <algorithm>using namespace std;int main() { freopen("input.txt", "r", stdin原创 2021-03-12 12:08:24 · 274 阅读 · 0 评论 -
A1039 Course List for Student (25 分)
思路:1. 学生姓名用 【字符串hash】映射为int型数字作为下标;2. 用vector<int> 型的数组 存放每个学生的选择课程的课程编号;#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int N = 40010;const int M = 26 * 26 * 26 * 10;vector<int> se原创 2021-03-10 23:19:09 · 73 阅读 · 0 评论 -
19冬季 2.Block Reversing
#include <cstdio>#include <algorithm>using namespace std;const int maxn = 100010;// 一、定义静态链表struct Node { int add, data, next; int order;}node[maxn];bool cmp(Node a, Node b) { return a.order < b.order;}int main() { // 二、初始化.原创 2021-03-10 21:07:09 · 69 阅读 · 0 评论 -
A1074 Reversing Linked List (25 分)
#include <cstdio>#include <algorithm>using namespace std;const int maxn = 100010;// 一、定义静态链表struct Node { int add, data, next; int order;}node[maxn];bool cmp(Node a, Node b) { return a.order < b.order;}int main() { // 二、初...原创 2021-03-10 17:35:02 · 113 阅读 · 0 评论 -
A1097 Deduplication on a Linked List (25 分)
思路:一、定义静态链表,结点性质由order定义,表示结点在链表上的序号,因为要先输出未删除的结点,后输出被删除的结点。所有,令未删除的结点的order从0开始编号,要删除的结点从maxn开始编号。二、初始化,令order的初值为 2 * maxn,是无效结点;三、设置countValid初值为0,记录未删除的有效结点的个数;设置 countRemoved初值为0,记录要要删除的结点的个数。四、排序,按照order,从小到大排序;五、输出链表,最后一个结点要特殊处理。代码:原创 2021-03-10 15:33:47 · 78 阅读 · 0 评论 -
A1052 Linked List Sorting (25 分)
2021.03.09 16:20~链表包含一系列结构,不一定是在内存中相邻的。我们假定每个结构包含:一个正整数 key 和一个 Next指针 指向下一个结构。现在给定一个链表,你要通过它们的 key值升序排列。INPUT第一行:正整数N(结点个数),头结点地址(5位正整数)。用 -1 代表 NULLN行:每个以下面格式描述一个结点:地址(Add)、值(Key)、下个结点地址(Next)Add是结点在内存中的地址,key是,Next是下一个结点的地址。保证所有值都是独立的,从头结点原创 2021-03-10 10:10:25 · 79 阅读 · 0 评论 -
A1032 Sharing (25 分)
INPUT第一行包含两个结点的地址和一个正整数N,两个地址是两个单词的第一个结点地址,N是结点总数。结点地址是5位正整数,用-1代表NULL。N行:Add是结点的位置,Data是这个结点包含的字母,Next是下一个结点的地址OUTPUT输出共同后缀的开始位置。如果两个单词没有共同后缀,输出 -1思路:①使用 静态链表 存储结点的 字母data、下一个结点地址next,当前地址就是这个结点的数组下标;②因为链表的特殊性,当两个链表出现公共结点的时候,肯定后面的结点都是相同的。所原创 2021-03-09 12:12:41 · 125 阅读 · 0 评论 -
【链表】专辑
题目 考点 分值 难度原创 2021-03-09 10:26:36 · 124 阅读 · 2 评论 -
A1015 Reversible Primes (20 分)
可逆的素数是反转过来仍然是素数。例如在十进制中,73是素数,反转过来,37仍然是素数。现在给定两个正整数 N 和 D,你要告知 在D进制下 N 是否是一个反转素数。INPUT输入文件包含一些用例。每个用例占据一行,包含两个正整数 N 和 D。当输入负数N的时候结束输入OUTPUT对于每个用例,如果N在D进制下是素数的时候打印 Yes,如果不是的话就打印 No题目大意:给出一个D进制下的数N,如果这个数N本身是素数,并且,它在D进制反转过来之后转换成十进制仍为素数,那么就输出 Ye原创 2021-03-08 21:20:25 · 91 阅读 · 0 评论 -
B1007 素数对猜想 (20 分)
题目大意:输入一个数n,找出n之前的素数之间差为2的素数对个数。例如:2 3 5 7 11 13 17 19 23,那么20之前的素数对为:[3, 5],[5, 7], [11, 13], [17, 19] 4对思路:素数打表,从第1个开始,和i-1个比较,如果差为2,则cnt++#define _CRT_SECURE_NO_WARNINGS 1#include <cstdio>#include <cmath>const int maxn = 10..原创 2021-03-08 20:21:53 · 101 阅读 · 0 评论 -
2019春季 Sexy Primes
1. Sexy Primes思路:①素数打表;②判断输入的数字和它相邻的6是否都为素数,设置标记flag;③如果flag==true,输出Yes;④如果flag==false,从n开始遍历p数组,如果当前p[i]和p[i+6]都为true的情况下,就break。#define _CRT_SECURE_NO_WARNINGS 1// 03.08 17:00/*性感素数是一对素数 (p, p+6)这样的形式,给定一个正整数,判断它是否是一个素数。inputn (10^8)o原创 2021-03-08 17:18:28 · 310 阅读 · 0 评论 -
B1013 数素数 (20 分)
#define _CRT_SECURE_NO_WARNINGS 1// 2021.03.08 11:27#include <cstdio>#include <cmath>const int maxn = 10010;bool isPrime(int n) { if (n <= 1) return false; int sqr = (int)sqrt(1.0 * n); for (int i = 2; i <= sqr; i++) { if (n.原创 2021-03-08 12:03:18 · 83 阅读 · 0 评论 -
2020春季 Prime Day
7-1 Prime Day (20 分)The above picture is from Sina Weibo, showing May 23rd, 2019 as a very cool "Prime Day". That is, not only that the corresponding number of the date20190523is a prime, but all its sub-strings ended at the last digit3are prime nu...原创 2021-03-07 17:25:09 · 105 阅读 · 0 评论 -
【素数】专辑
判断素数素数的定义:只能被 1 和它自己整除。思路:1不是素数,从2开始遍历到 根号n,如果中间有可以被整数的数,那么就不是素数,否则,完了之后返回 true;bool isPrime(int n){ if(n <= 1) return false; int sqr = (int)sqrt(1.0 * n); for(int i = 2; i <= sqr; i++){ if(n % 2 == 0)原创 2021-03-03 14:50:00 · 109 阅读 · 2 评论 -
BFS 求迷宫从起点S到终点T的最少步数
给定一个 n*m 大小的迷宫,其中 * 代表不可通过的墙壁,而 ·代表平地,S表示起点,T表示终点。移动过程中,如果当前位置是 (x, y),且每次只能前往 上下左右 四个位置的平地,求从起点 S 到达终点 T 的最少步数。Sample Input:5 5......*.*..*S*..***....T*2 2 4 3Sample Output:11...原创 2021-02-25 22:40:16 · 353 阅读 · 0 评论 -
BFS 求给定的矩阵中“块”的个数
给出一个 m×n 的矩阵,矩阵中的元素为 0 或 1。称位置 (x, y) 与其上、下、左、右四个位置是相邻的。如果矩阵中有若干个 1 是相邻的(不必考虑两两相邻),那么称这些 1 构成了一个“块”。求给定矩阵中“块”的个数。Sample Input:6 70 1 1 1 0 0 10 0 1 0 0 0 00 0 0 0 1 0 00 0 0 1 1 1 01 1 1 0 1 0 01 1 1 1 0 0 0Sample Output:4思路:对于矩阵 Matrix原创 2021-02-25 18:44:05 · 221 阅读 · 0 评论 -
9.2 二叉树的遍历 A1110 Complete Binary Tree (25 分) 完全二叉树
这题也太坑了,编号还有两位数的,因此测试点2 3 答案错误思路:1.存储结点:用静态二叉链表数组的方式存储;2.找根结点:遍历,hashTable数组,没有被指向过的就是根结点;判断完全二叉树3.编号,从左到右、从上到下,从1开始编号。这个顺序正好符合层序遍历。4.判断:遍历每个结点,看它的左右孩子(若存在)是否符合编号 2*i,2*i+1的规则5.输出时的最后一个结点怎么找在层序遍历时,最后记一下last的下标#define _CRT_SECURE_NO_WA原创 2021-02-25 16:06:46 · 152 阅读 · 0 评论 -
9.2 二叉树的遍历 A1102 Invert a Binary Tree (25 分)
此题考查静态二叉链表思路:1. 怎么存这些结点?用静态二叉链表,对应存左孩子和右孩子,如果是 - ,则存 -1,表示无左/右孩子。2.怎么找到根结点?通过对比二叉树和题目的输入条件发现,没有被左右孩子指向的就是根结点。3.怎么inver二叉树画图发现,就是递归的从根结点开始,从上到下,交换左右孩子的值。/** * 02.25 11:07 ***/#include <iostream>#include <queue>#include <原创 2021-02-25 11:47:25 · 79 阅读 · 0 评论 -
4.1排序 A1095 Cars on Campus (30 分)
题目大意给出浙大门口进出校门的车辆记录,根据这些记录,判断给定时间点校园内有多少辆车,最后给出当天停车最长的车牌号和对应时长。我的思路这道题自己硬怼了2h,AC了,好开心~1. 把题目给的车辆记录存起来,这里用Record结构体,存储:车牌号、时间点、进/出;2. 匹配同一车牌号的进出记录(按照时间先后),这就得先按照时间进行排序sort。然后从第一个 in 记录依次往后遍历,对于当前in记录(记为a)从它的后一个开始遍历整个车辆记录。如果遇到相同车牌号的in,就跳过这个a记录,意思是它原创 2021-02-23 10:58:41 · 111 阅读 · 0 评论 -
4.1排序 A1080 Graduate Admission (30 分)
// 02.22 13:35-17:00#include <algorithm>#include <cstdio>using namespace std;struct Student { int GE, GI, sum, r, id; int cho[6];} stu[40010];struct School { int quota; int stuNum; //当前录取人数 int id[40010]; //存储录.原创 2021-02-22 16:56:29 · 98 阅读 · 0 评论 -
PAT(甲级)2020年冬季考试
标号 标题 分数 通过数 提交数 通过率 7-1 The Closest Fibonacci Number 20 85 220 0.39 7-2 Subsequence in Substring 25 79 323 0.24 7-3 File Path 25 62 200 0.31 7-4 Chemical Equat...原创 2021-02-22 15:01:36 · 1277 阅读 · 2 评论 -
3.6字符串处理 A1001 A+B Format (20 分)
题目大意:对于两个数a和b,计算sum,然后输出sum,要求每3位用“,”间隔我的思路:把sum用 sprintf 写入到一个字符数组str中,然后依次输出str中的内容,按照当前输出下标和数组长度len的关系,如果剩余的字符个数%3==0时,就输出逗号。// 02.20 16:50#include <string.h>#include <iostream>using namespace std;int main() { long long a,原创 2021-02-20 17:51:46 · 88 阅读 · 0 评论 -
3.6字符串处理 B1009 说反话 (20 分)
// 02.20 10:18#include <iostream>using namespace std;int main() { char words[80][80]; // 定义一个二维数组存储字符串,每个单词存一格 int i = 0; while(scanf("%s", words[i]) != EOF){ i++; } int cnt = i; // 一共多少个单词 //printf("cnt:%d\n", cn.原创 2021-02-20 10:54:58 · 82 阅读 · 0 评论 -
3.6字符串处理 B1002 写出这个数 (20 分)
// 02.20 10:02#include <iostream>#include <string.h>using namespace std;// 写出数字对应的二维数组字符串char strNum[10][5] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};int main() { char str[1010]; // 存储 .原创 2021-02-20 10:16:21 · 83 阅读 · 0 评论 -
3.6字符串处理 B1031 查验身份证 (15 分)
// 02.20 09:14#include <iostream>using namespace std;int weight[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 }; //权重char v[11] = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' }; // 校验码int main() { int n; scanf("%d", &n); //n = 1.原创 2021-02-20 09:58:47 · 82 阅读 · 0 评论 -
递归
全文摘自晴神视频递归剑法递归剑法一、调用自己就是调用别人;二、描述清楚一层做的事情;三、不要陷入到层层展开中。递归的定义:在函数中调用自己什么是调用别人:------>什么是调用自己:-------->-------->特性:函数A 针对不同的参数,里面的定义是几乎一样的,意味着一定可以写出来一个比较统一的函数,来代表所有参数的情况,这样只需要把函数A定义一次就可以了。这里的 A(N=1),是一个函数,内部的变量空间就和外面是..原创 2021-01-30 12:00:54 · 86 阅读 · 0 评论 -
习题3.5 求链表的倒数第m个元素 (20分)
请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。函数接口定义:ElementType Find( List L, int m );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */...原创 2020-03-26 15:34:03 · 1596 阅读 · 0 评论 -
7-1 用格里高利公式求给定精度的PI值 (15分)
教育超市-浙大版《C语言程序设计(第3版)》第4章 循环结构(练习4.1 用格里高利公式求π的近似值)本题要求编写程序,计算序列部分和4∗(1−1/3+1/5−1/7+...),直到最后一项的绝对值小于给定精度eps。输入格式:输入在一行中给出一个正实数eps。输出格式:在一行中按照“Pi = pi”的格式输出部分和的值pi,精确到小数点后四位。题目保证输入数据和计算结果均...原创 2020-02-11 19:27:06 · 11692 阅读 · 4 评论 -
PAT A1104
#include <stdio.h>int main(){ int n; scanf("%d", &n); double num[n]; double total_sum = 0; for(int i = 0; i < n; i++){ scanf("%lf", &num[i]); } for(int i = 0; i < n; i+...原创 2020-02-03 23:23:28 · 168 阅读 · 0 评论 -
PAT A1067Sort with Swap(0, i) (25point(s))
#include <stdio.h>#include <algorithm>using namespace std;const int maxn = 100010;int main(){ int n; int ans = 0; // 交换次数 scanf("%d", &n); int left = n-1; // 数字不在本位上的个数...原创 2020-02-02 07:22:05 · 122 阅读 · 0 评论 -
PAT B1008
数组元素循环右移问题;// 数组元素循环右移问题#include <stdio.h>int main(){ int n, m; scanf("%d%d", &n, &m); m = m % n; // 依次录入数组元素 例如 1 2 3 4 5 6 int a[n]; for(int i = 0; i < n; i++){ scanf("...原创 2020-01-07 16:12:20 · 158 阅读 · 0 评论 -
PAT A1083
1083 List Grades (25 分)Given a list of N student records with name, ID and grade. You are supposed to sort the records with respect to the grade in non-increasing order, and output those student rec...原创 2019-01-14 10:36:33 · 147 阅读 · 0 评论 -
PAT A1001
#include <cstdio>#include <cstring>int num[10];int main(){ int a, b, sum; scanf("%d %d", &a, &b); sum = a + b; if(sum < 0){ printf("-"); sum = -sum; } int len = 0;...原创 2019-01-03 19:00:29 · 188 阅读 · 0 评论 -
PAT刷题笔记
数据范围B1011,题目给出范围是,int 型的数据范围是,两个 int 型变量相加,最后是可能超过 int 型的,因此需要用 long long 作为变量类型原创 2019-02-21 16:58:56 · 160 阅读 · 0 评论