PAT
文章平均质量分 53
穆穆不惊左右
这个作者很懒,什么都没留下…
展开
-
PAT A1117 爱丁顿数 Eddington Number 一个样例点不过的错误原因
这道题有一个样例点一直过不了。想了很久也没有想明白,今天终于想明白了!!!~~如果跟我一样 从大到小排列,i从1 开始,要注意 while循环条件应该是<n+1!int main(){ int n; cin>>n; vector<int> v(n); for(int i=0;i<n;i++){ cin>>v[i]; } sort(v.rbegin(),v.rend()); //cout<<v[0]; int i=1;原创 2020-05-23 16:46:48 · 272 阅读 · 0 评论 -
PAT 1050 螺旋矩阵 找规律题 C++
1.N 找出m-n的最大m,n开平方后的数往上或下找能被整除的2.找规律(循环)本质:把一个递减的数组重新排序,没有时间复杂度的要求可以放到一个新的数组中顺时针完成一次循环(见下图 黑框和灰框各为一次循环),其中一行(i相同),一列(j相同)一次循环可分为四个小的步骤(见图中四个箭头)。如果图不是很好理解,可以以绿色箭头圈中的数字为一组。写出他们的i j(行列...原创 2020-03-27 19:41:44 · 270 阅读 · 0 评论 -
PAT B1051 复数乘法 13分错误原因
首先讲一下三角形式的复数乘法其次 13分的原因:改了A(实部) 别忘改B(虚部)C++代码#include <iostream>#include <algorithm>#include <vector>#include <cmath>using namespace std;int main(){ double r...原创 2020-03-27 19:24:39 · 210 阅读 · 0 评论 -
1082. Read Number in Chinese
题意:1 按中文的发音规则 九位(个节,万节,亿节) 除个节外每节的末尾要视情况输出万或者亿。2 如果在数字的某节中,某个非零位的高位是零,那么该非零位的发音前额外加一个零。思路:1.将数字按字符串方式处理,如果str[0]是负数 那么输出“-”。设置下标left right处理数字的每一个节的输入输出。left指向当前输入的位数,right指向与left同节的个位。不会超过九位的话,2.设置bo...原创 2018-04-20 15:58:54 · 185 阅读 · 0 评论 -
1001. A+B Format
题意:给出两个整数a,b(不超过10的九次方) 求a+b的值 按照xxx,xxx,xxx的格式输出思路:1. 对输入的两个数字a和b进行累加,赋值给sum,判断累加的sum是否为负数,是负数,则负号先行输出,并令sum=-sum来取正。 2. 把sum的每一位存到数组中 (123 num[0]=3,num[1]=2,num[2)=1) 注意这里...原创 2018-04-18 16:03:13 · 224 阅读 · 0 评论 -
1005. Spell It Right (20)
#include<cstdio>#include<cstring>char num[20][20] = {"zero","one","two","three","four","five","six","seven","eight","nine","ten"};char s[111];//初始化字符串,方便gets int digi...原创 2018-04-18 16:23:35 · 86 阅读 · 0 评论 -
1012. The Best Rank (25)
没掌握 多看看题意:输入 n个考生 m个查询(按id,查询的是考生最高的排名对应的课程是哪个)n个记录考生id C门课的分数 M课的分数 E的分数要查询的m个id(查不到的id返回N/A)思路:1. 因为有优先级,就按ACME顺序设数组。2. 结构体student 存放6位整数id 和四个分数(grade【4】)3. 要查询每个学生每个课程的排名 那么就需要一个二维数组,RANK【1000000】...原创 2018-04-22 22:30:19 · 172 阅读 · 0 评论 -
1008. 数组元素循环右移问题
思路:修正m m=m%n;#include <cstdio>int main(){int n,m,count=0;//修正mscanf("%d %d",&n,&m);m=m%n; int a[110];for(int i=0;i<n;i++){ scanf("%d",&a[i]);}for(int i=n-m;i<n;i++...原创 2018-04-06 22:19:16 · 73 阅读 · 0 评论 -
1018. 锤子剪刀布
#include <cstdio>int change(char c){ if(c=='B') return 0; if(c=='C') return 1; if(c=='J') return 2;}int main(){int T;char c1,c2;scanf("%d",&T);int a[3]={0},b[3]={0}; //记录赢得多的次数的...原创 2018-04-06 22:20:22 · 155 阅读 · 0 评论 -
1015. 德才论
题意:给出n个学生的准考证号、德分、才分以及及格线L、优秀线H,然后对这n个考生进行分类1 如果德分和才分有一个低于L,则不及格,即第五类,且设下面4类均及格。2 如果德分和才分均不低于H,则为第一类。3 如果德分不低于H,才分低于H,则为第二类。4 如果德分和才分均低于H但德分不低于才分,则为第三类。5 剩余为第四类对这n个考生按下面的规则排序:1 先按类别从小到大排序2 类别相同的 按总分从大...原创 2018-04-23 16:14:19 · 247 阅读 · 0 评论 -
1046. 划拳
#include <cstdio>int main(){int N;scanf("%d",&N);int A1,A2,B1,B2;int A3=0,B3=0;for(int i=0;i<N;i++){ scanf("%d %d %d %d",&A1,&A2,&B1,&B2);int ans = A1+B1;if(an...原创 2018-04-04 21:25:09 · 93 阅读 · 0 评论 -
1016. 部分A+B
注意: 10的16次方 超过int范围 2的31次方 所以要用long long %lld思路 :PA每次加一个DA 那么写出来就是:令PA 等于零 PA =DA +PA*10#include <cstdio>int main(){ long long A,DA,B,DB; scanf("%lld %lld %lld %lld",&A,&DA,&B...原创 2018-04-04 21:24:13 · 174 阅读 · 0 评论 -
1026. 程序运行时间
#include <cstdio>const int CLK_TCL =100;int main(){ int C1,C2,temp; scanf("%d %d",&C1,&C2); if(C1>C2){ temp = C2; C2 = C1; C1 = C2; } //注意四舍五入!!!! int t1 = C2-C1;...原创 2018-04-04 21:23:14 · 100 阅读 · 0 评论 -
1048. 数字加密
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int a[100010];int bin(int left,int right,int key){ int mid; while(left<=right){ mid = (le...原创 2018-04-17 13:07:38 · 109 阅读 · 0 评论 -
1024. 科学计数法
思路:1.确定E的位置 可以识别左边小数的终止位置和右边指数的正负号和绝对值exp 是负数的话 是0.00……的形式小数点后0.几个0 的个数 exp-1 0.几个零之后的数就是左边的数了指数为正数的话,注意小数点的输出 : 若小数点在最右边的话 是不用输出的 2. 按理说指数为0的...原创 2018-04-17 13:07:08 · 257 阅读 · 0 评论 -
two pointers
归并排序快速排序原创 2018-03-28 22:54:32 · 110 阅读 · 0 评论 -
二分
二分查找二分法拓展原创 2018-03-28 22:53:22 · 97 阅读 · 0 评论 -
1014. 福尔摩斯的约会
输入 : 四个字符串输出:DAY:HH:MM 这样的格式思路: 1. 求DAY 扫描前两串字符串,记录第一对相同位置的大写字母,求其与A的距离 来判断星期几 星期一到星期天的话 从A-G扫描就够啦。扫出A-G以外的就对应错啦 2. 求HH 继续往后找 相同位置的若是数字0-9则对应0-9,若是字母A-N,则对应10-23 A-N同理 3. 求MM 扫描后两个字符串,寻...原创 2018-04-16 22:46:10 · 180 阅读 · 0 评论 -
B【1002】写出这个数
思路: 1.数太大以 字符数组 的形式读入,用strlen读取长度 10的100次幂,字符数组需要大于100,然后枚举转换为整形然后 加和。 2.因为要从高位到低位输出拼音,把sum的每一位存于ans数组中、 3.将每个数字对应的汉语拼音写一个char型 二维 数组#include <cstdio>#inclu...原创 2018-04-16 22:32:21 · 372 阅读 · 0 评论 -
A1006 Sign in and sign out
题意:找出当天开门和关门的人。思路:结构体存名字 时 分 秒,写比较函数 定义temp open close存信息。此题可对比1028 人口普查 人口普查分别写两个比较函数。此题只写一个。注意:IDnumber至多15个字符 所以id数组至少16开。#include<cstdio>struct record{ char id[20]; int hh,mm,ss;}tem...原创 2018-04-11 12:23:52 · 196 阅读 · 0 评论 -
1016.Phone Bills 电话费
题意:第一行 给出24h中每个小时区间内的资费(分钟为单位)!!!注意时间格式是(月 日 时 分),并给出N个通话记录点,每个通话记录点都记录了姓名、当前时刻(月;日;时;分)以及其属于通话开始(on-line)或是通话结束(off-line)。现在对每个人的有效通话记录进行资费计算,有效通话记录是指同一个用户能够配对的所有on-line 和off-line,而这样的配对需满足:...原创 2018-04-24 11:00:59 · 269 阅读 · 0 评论 -
1035. Password
题意:给定N个用户的姓名和密码,现需要把密码中的‘1’改为‘@’,0改为‘%’,‘l’改为‘L’,‘O’改为‘o’求需要修改的密码个数以及对应用户的姓名和修改后的密码。思路:1. 结构体node类型,存放name 和 password。用bool型变量ischange 记录是否需要修改用户的password。2。对每个password都进行判定,如果判定后得知需要修改,则修改,并置该用户的isch...原创 2018-04-19 22:26:27 · 114 阅读 · 0 评论 -
A1129
题意: 输出当前数 之前的数,按访问的次数降序输出,有输出个数的限制,访问次数一样的则输出编号小的样例解释:3 5 7 5 5 3 2 1 8 3 8 125: 37: 3 55: 3 5 7第一行 5之前 只有3 输出3第二行 7之前 有3和5 二者出现次数相同 3小 3先输出……分析:set 自动递增排序 去重商品属性两个:编号value和点击次数...原创 2019-04-23 17:17:44 · 145 阅读 · 0 评论 -
A1076 Forwards on weibo
直接看输入输出第一行输入的 7 3 分别代表 用户总数 和转发的层数下面7行详细描述: 第一个数:用户关注的用户数目,之后几个数是具体关注了谁。最后一行 第一个数:2个查询值 后跟具体查谁未完……...原创 2019-04-23 17:17:11 · 112 阅读 · 0 评论 -
B1013 数素数
原创 2019-04-12 14:04:22 · 105 阅读 · 0 评论 -
A1051 Pop Sequence
题意:一个容量为M的栈,把1,2……n依次入栈,能否得到所给的出栈序列思路:模拟,依次入栈,如果入栈的元素恰好等于出栈序列当前等待出栈的元素,则出栈。同时把出栈序列当前等待出栈的元素位置标记后移一位,重复。步骤:1. 初始化栈(STL stack或者自己实现) 读入需对比的出栈序列。bool型变量flag表示出栈序列是否合法,初值为true??int型变量current标记正对比的...原创 2019-04-11 17:48:45 · 269 阅读 · 1 评论 -
1077 互评成绩计算(四舍五入保留整数)
题意:计算平均分解题:n输入的组数,m不得超过的最高分数,g2老师评的分数,g1是平均分初始化为0,temp读每次输入,maxn保留最高分初始化-1,minn保存最低分,初始化m+1。所有分数即每次的temp都累加到g1中,然后g1减去最大最小值,注意要乘1.0再除个数cnt。因为去掉了最高分和最低分,所以cnt应该初始化为-2.四舍五入保留整数:cout << int((((g1 -...原创 2018-06-19 09:11:21 · 570 阅读 · 0 评论 -
1069 微博转发抽奖
#include <iostream>#include <map>using namespace std;int main() { int m, n, s; scanf("%d%d%d", &m, &n, &s); string str; map<string, int> mapp; ...原创 2018-05-30 22:09:19 · 314 阅读 · 0 评论 -
1076 Wifi密码
题意: 把T的选项的对应数字输出思路:遇到一个字符串大小为3,且s【2】为T,那么输出s【0】字母所对应的数字。#include<iostream>using namespace std;int main(){ int n; string stl;while(cin>>stl)if(stl.size()==3&&stl[2]=='T') co...原创 2018-06-12 21:24:41 · 287 阅读 · 0 评论 -
1068 万绿丛中一点红(20)
题意:给出 八列六行的数值,只有标蓝地方(第五列第三行)的数值与其周围一圈的差值都超过200,所以输出这个位置和这个值。不唯一和不存在的时候的输出方式。分析: 如果是唯一地才输出,所以用map标记,不是唯一地就不用考虑直接输出not unique就好。挨个与周围八个点比较,有一个不满足就return false...原创 2018-05-29 16:15:21 · 225 阅读 · 0 评论 -
B1067 试密码
分析: 如果遇到#要停止 break 直接判断与接收的密码是否相同原创 2018-05-28 23:01:08 · 300 阅读 · 0 评论 -
B1066 图像过滤
题意:将大于100,小于等于150的数换成000,输出时注意不足位的高位补0.分析:1 不用存数组,直接循环判断每个数输出即可。 2 输出格式用双重循环控制 每行用j来控制,j不为0的时候输出空格,j不断相加加到n之后跳出循环,输出换行符开始下一 行的循环。 3 %03d控制高位补0#include<cstdio>us...原创 2018-05-28 22:53:05 · 299 阅读 · 0 评论 -
平衡二叉树(AVL树)
平衡二叉树(AVL树)左右子树高度之差的绝对值不超过1,左右子树高度之差称为该结点的平衡因子。引入目的:使每次查询操作是o(logn)的时间复杂度 通过对树的结构进行调整,使树的高度在每次插入结束后仍能保持o(logn)的级别。引入变量height来记录高度struct node{int v,height; //结点权值和当前子树的高度node *lchild,*rchild;//左右孩子结点...原创 2018-05-28 22:34:56 · 157 阅读 · 0 评论 -
1055 集体照
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;struct student{ string name; int height;};bool compare(struct stu...原创 2018-05-05 15:39:47 · 390 阅读 · 0 评论 -
1052. 卖个萌
思路: 写一个方法 从[]中提取符号。getchar() 返回值为int型 ASCII码或eof注意:边界判断 选择的序号超出上下界。超时问题scanf写在这就超时。#include<cstdio>#define maxn 12 char hand [maxn][30];char eye [maxn][30];char mouth [maxn][30];int get(c...原创 2018-05-05 14:18:27 · 271 阅读 · 0 评论 -
1028. List Sorting
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct pat{ int id; char name[10]; int grade;}p[100010];bool cmp1(pat a,pat b){ if(a.id!=b.id...原创 2018-04-27 10:28:56 · 127 阅读 · 0 评论 -
A1025 PAT Ranking
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;struct Student{ char id[15];//准考证号 int score; int local_number;//考场号 int local_rank;//考场...原创 2018-04-26 11:32:57 · 92 阅读 · 0 评论 -
1077. Kuchiguse
#include<iostream>#include<algorithm>using namespace std;int main(){ int n,minlen=256; char str[110][260]; string ans; scanf("%d",&n); getchar(); for(int i=0;i<n;i+...原创 2018-04-19 22:28:29 · 229 阅读 · 0 评论 -
A1011 WORLD CUP BETTING
题意:给出三场比赛的赔率,正确率为65%,每次投注2元,问最大期望收入 以及该期望下的比赛结果。好吧。。。。。。。。我们来看通俗的解释2333一共三场比赛 每行是每场比赛 WIN TIE LOST的概率,从这三个数中选择最大的数为a,b,c,并输出三行各自选择的是哪一个,计算最大收益。即(a*b*c*0.65-1)*2并输出。思路:令ans记录最大收益 初值为1.0,每读入一行,就找到该行的最大数...原创 2018-04-11 12:22:55 · 354 阅读 · 0 评论 -
B1041 考试座位号
#include<cstdio>const int maxn = 1010;struct Student{ long long id; int examSeat;}testSeat[maxn];int main(){int n,m,seat,examSeat;long long id;scanf("%d",&n);for(int i=0;i<n;i...原创 2018-04-03 15:09:02 · 100 阅读 · 0 评论