![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
note-PTA乙级
.sout
这个作者很懒,什么都没留下…
展开
-
1048 数字加密 (20 分)
看完后还以为好简单,做完后2,5点一直没过,参考博客https://blog.csdn.net/qq_44352065/article/details/104168192才知道,b不足位要补0????????????。#include<bits/stdc++.h>using namespace std;string t[13]={"0","1","2","3","4","5","6","7","8","9","J","Q","K"};string res="";int main(){原创 2021-08-22 23:58:20 · 63 阅读 · 0 评论 -
1047 编程团体赛 (20 分)
#include<bits/stdc++.h>using namespace std;int a[1005];int main(){ int n; cin>>n; int idx,num,score; set<int> s; for(int i=0;i<n;i++){ scanf("%d-%d%d",&idx,&num,&score); s.insert(id..原创 2021-08-21 23:01:07 · 55 阅读 · 0 评论 -
1046 划拳 (15 分)
#include<bits/stdc++.h>using namespace std;int n;int s,m;//甲,乙int main(){ int a,b,c,d; cin>>n; for(int i=0;i<n;i++){ cin>>a>>b>>c>>d; if((a+c==b&&a+c==d)||(a+c!=b&&a+..原创 2021-08-21 19:13:27 · 56 阅读 · 0 评论 -
1045 快速排序 (25 分)
思路比较元素是否比左边所有元素大(如果是最左边的默认大),并且比较是否比右边所有元素小(如果是最右边的默认小)。方法将所有元素放入set集合中(默认排序的),分元素左边和右边元素两个集合,每次比较前都将本元素从右边set中删除,每次比较后都将本元素插入左边set中。比较的话就只要比较当前元素是否比左set集合的最后一个元素大,否比右set集合的第一个元素小。注意:涉及到计算的要进行简化,不然会过不了#include<bits/stdc++.h>using namespac..原创 2021-08-20 23:11:09 · 79 阅读 · 0 评论 -
1044 火星数字 (20 分)
注意:测试点1是数字0,需要特判还有数据可以被13整除(只输出一个字符串)#include<iostream>#include<string>#include<cstdio>#include<cctype>using namespace std;string a[15] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct","nov..原创 2021-08-19 22:02:21 · 110 阅读 · 0 评论 -
1043 输出PATest (20 分)
#include<bits/stdc++.h>using namespace std;int a[300];string source="PATest";int main(){ string s; cin>>s; for(int i=0;i<s.size();i++){ a[s[i]]++; } int mn=100000,mx=0; for(int i=0;i<source.size();i++.原创 2021-08-19 08:52:41 · 63 阅读 · 0 评论 -
1042 字符统计 (20 分)
#include<bits/stdc++.h>using namespace std;int a[300];int main(){ string s; getline(cin,s); for(int i=0;i<s.size();i++){ if(s[i]>='A'&&s[i]<='Z'){ a[s[i]+32]++; continue; } .原创 2021-08-19 07:34:48 · 67 阅读 · 0 评论 -
1041 考试座位号 (15 分)
#include<bits/stdc++.h>using namespace std;struct Node{ string num; int b;}nodes[1005];int main(){ string s; int a1,b1,cnt; cin>>cnt; for(int i=0;i<cnt;i++){ cin>>s>>a1>>b1; ..原创 2021-08-17 23:58:36 · 58 阅读 · 0 评论 -
1040 有几个PAT (25 分)
起先,看到这道题目一头雾水,只能参考网上的博客(https://blog.csdn.net/shiliang97/article/details/100015080)了。代码如下:#include<bits/stdc++.h>using namespace std;const int N=100005;int p[N],cnt=0;long long total=0;int main(){ string s; cin>>s; for(int.原创 2021-08-17 23:41:45 · 60 阅读 · 0 评论 -
1039 到底买不买 (20 分)
#include<bits/stdc++.h>using namespace std;int main(){ string a,b; map<char,int>ma,mb; cin>>a>>b; for(int i=0;i<a.size();i++){ ma[a[i]]++; } for(int i=0;i<b.size();i++){ mb[b[i]]++..原创 2021-08-17 08:12:23 · 57 阅读 · 0 评论 -
1038 统计同成绩学生 (20 分)
#include<bits/stdc++.h>using namespace std;const int N=100005;int a[N],n;int main(){ cin>>n; int temp; for(int i=0;i<n;i++){ cin>>temp; a[temp]++; } int cnt; cin>>cnt; for(int i=.原创 2021-08-15 19:51:58 · 60 阅读 · 0 评论 -
1037 在霍格沃茨找零钱 (20 分)
#include<bits/stdc++.h>using namespace std;typedef long long ll;ll g1,s1,k1;ll g2,s2,k2;int main(){ scanf("%lld.%lld.%lld",&g1,&s1,&k1); scanf("%lld.%lld.%lld",&g2,&s2,&k2); ll total1=g1*17*29+s1*29+k1; ..原创 2021-08-15 19:07:40 · 50 阅读 · 0 评论 -
1036 跟奥巴马一起编程 (15 分)
#include<bits/stdc++.h>using namespace std;int main(){ int n; char c; cin>>n>>c; int row=n/2;//多少行 if(n%2==1)row+=1; for(int i=0;i<n;i++)cout<<c; cout<<endl; for(int i=0;i<row-2;i++)..原创 2021-08-15 18:43:15 · 68 阅读 · 0 评论 -
1035 插入与归并 (25 分)
思路:先判断是否是插入排序,否则就是归并排序(题目结果唯一)。判断是否是插入排序方法:1.从目标找出后一个元素比前一个元素小的节点(这个节点就是未排序的节点)。2.从未排序的节点开始与相同下标的原来的数组比较,如果出现元素不一致的现象,就不是插入排序。插入排序下一趟方法:1.数组第0个元素开始到第一个未排序节点进行排序(可以用sort函数).2.后面的元素原样输出即可。归并排序一趟方法:1.先定义一个变量c,用来存每次要排的元素个数,由于第一次归并排序是单个元素与相邻元素排序,所以一次要..原创 2021-08-14 23:33:41 · 132 阅读 · 0 评论 -
1034 有理数四则运算 (20 分)
这道题想了好久,一晚上加一早上,第三个点愣是没过,查阅众多博客,不是改为long long就是负负得正,但是改了后第三个还是答案错误,最后想了一下是不是相乘溢出的原因,然后在乘法和除法的前面加上约分:代码如下long long gcd=__gcd(m1,d1);//求公约数 if(gcd!=1){ m1/=gcd; d1/=gcd; } gcd=__gcd(m2,d2);//求公约数 if(gcd!=1){ m2/=gcd..原创 2021-08-14 10:15:57 · 77 阅读 · 0 评论 -
1024 科学计数法 (20 分)
这题想了好久,还是没有相出简单的方法,只能用最笨的方法了:思路:1.用字符串接收科学计数法数值2.将整数及小数部分存到另一个字符串3.判断指数为正还是为负4.输出特殊情况(指数为0)5.判断特殊情况(数字串长度大于指数)#include<bits/stdc++.h>using namespace std;// [+-][1-9].[0-9]+E[+-][0-9]+//截取指定下标及之后的字符串string subString(string s,int start,in..原创 2021-08-13 23:42:40 · 381 阅读 · 0 评论 -
1033 旧键盘打字 (20 分)
#include<bits/stdc++.h>using namespace std;bool flag[300];int main(){ string fail,source,target; //注意:第一行可能为空,直接用cin输入会导致fail存的是第二个字符串,如果直接用cin会导致第三个点答案错误。 getline(cin,fail); getline(cin,source); //标记坏掉的那些键, for(int i=0;i.原创 2021-08-08 09:51:27 · 52 阅读 · 0 评论 -
1025 反转链表 (25 分)
1025 反转链表 (25 分)起初,在看到这个题目的时候,我理解成将前链表前k个逆置,而且7个点过了5个。所以我也没往理解错题意方面去想。代码如下:#include<bits/stdc++.h>using namespace std;int first;int mid;//第k个元素位置int total,k;struct Node{ int data; int pre=-1;//上一节点下标 int next=-1;//下一节点下标}node[原创 2021-08-01 15:47:45 · 78 阅读 · 0 评论 -
1030完美数列 (25分)
思路:首先,这道题的意思就是将数列进行排序,然后在有序数列中找到满足(最大值是 M,最小值是 m, M≤mp)的数列(使用二分法找到小于或等于s的最大的数的索引)输出个数最多的数列的元素个数,代码如下:#include<bits/stdc++.h>typedef long long ll;using namespace std;;vector<ll> arr;ll cnt, p;//获取小于或等于s的最大数的索引//最后一个数据超出int范围,如果参数用int会出.原创 2021-08-07 10:45:47 · 90 阅读 · 0 评论