
本文共 4628 字,大约阅读时间需要 15 分钟。
制作不易,大家的点赞和关注就是我更新的动力!
由于这些题全是大一寒假刷的,部分还是c语言,部分的解题方法比较复杂,希望大家体谅。有问题欢迎大家在评论区讨论,有不足也请大家指出,谢谢大家!
温馨提示:可以点目录跳转到相应题目哦。
1041 考试座位号
分数 15
作者 CHEN, Yue
单位 浙江大学
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号
。其中准考证号
由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。
输出格式:
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。
输入样例:
43310120150912233 2 43310120150912119 4 13310120150912126 1 33310120150912002 3 223 4
输出样例:
3310120150912002 23310120150912119 1
代码:
#include#include #include #include #include struct st{ long long z,s,k; };using namespace std;int main(){ int n,i,j,m,ss; cin>>n; st a[n+2]; for(i=0;i >a[i].z >>a[i].s >>a[i].k ; } cin>>m; for(i=0;i >ss; for(j=0;j
1042 字符统计
分数 20
作者 CHEN, Yue
单位 浙江大学
请编写程序,找出一段给定文字中出现最频繁的那个英文字母。
输入格式:
输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。
输出格式:
在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。
输入样例:
This is a simple TEST. There ARE numbers and other symbols 1&2&3...........
输出样例:
e 7
代码:
#include#include #include #include #include #include using namespace std;int main(){ int cnt[128]={0},max=0; char c; do{ c=getchar(); if(c>='A'&&c<='Z') c+=32; if(c>='a'&&c<='z') cnt[c]++; }while(c!='\n'); for(int i='a';i<='z';i++){ if(cnt[max]
1043 输出PATest
分数 20
作者 CHEN, Yue
单位 浙江大学
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest....
这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee
代码:
#include#include #include #include #include #include using namespace std;int main(){ string a; cin>>a; int i,len=a.size(); int PP=0,AA=0,TT=0,ee=0,ss=0,tt=0; for(i=0;i
1044 火星数字
分数 20
作者 CHEN, Yue
单位 浙江大学
火星人是以 13 进制计数的:
- 地球人的 0 被火星人称为 tret。
- 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
- 火星人将进位以后的 12 个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。
例如地球人的数字 29
翻译成火星文就是 hel mar
;而火星文 elo nov
对应地球数字 115
。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入格式:
输入第一行给出一个正整数 N(<100),随后 N 行,每行给出一个 [0, 169) 区间内的数字 —— 或者是地球文,或者是火星文。
输出格式:
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例:
4295elo novtam
输出样例:
hel marmay11513
代码:
#include#include #include #include #include #include #define ll long long using namespace std;int main(){ string low[] = {"","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"}; string high[] = {"","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"}; int n; cin >> n; getchar(); string s; for(int i = 0; i < n; i++) { getline(cin, s); if(s[0] >= '0' && s[0] <= '9')//数字转火星文 { int num = stoi(s);//stoi()将字符串变为数字 if(num == 0) cout << "tret" << endl; else { if(num % 13 == 0) cout << high[num/13] << endl;//能被13整除的 else//其余情况,又分小于13和大于13的情况 { if(num < 13) cout << low[num%13] << endl; else if(num > 13) cout << high[num/13] << " " << low[num%13]< 从0截取到3 string s2 = s.substr(4, 7); for(int i = 1; i <= 12; i++) { if(high[i] == s1) sum += 13 * i; if(low[i] == s2) sum += i; } cout << sum << endl; } } } return 0;}
1045 快速排序
分数 25
作者 CAO, Peng
单位 Google
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?
例如给定 N=5, 排列是1、3、2、4、5。则:
- 1 的左边没有元素,右边的元素都比它大,所以它可能是主元;
- 尽管 3 的左边元素都比它小,但其右边的 2 比它小,所以它不能是主元;
- 尽管 2 的右边元素都比它大,但其左边的 3 比它大,所以它不能是主元;
- 类似原因,4 和 5 都可能是主元。
因此,有 3 个元素可能是主元。
输入格式:
输入在第 1 行中给出一个正整数 N(≤105); 第 2 行是空格分隔的 N 个不同的正整数,每个数不超过 109。
输出格式:
在第 1 行中输出有可能是主元的元素个数;在第 2 行中按递增顺序输出这些元素,其间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:
51 3 2 4 5
输出样例:
31 4 5
代码:
#include#include #include #include #include #include using namespace std;int main(){ long long n,i,j,k,max=0; vector v1; vector v; vector v2; cin>>n; long long cn=0; for(i=0;i >k; v1.push_back(k); v.push_back(k); } j=0; sort(v.begin(),v.end()); for(i=0;i max) { cn++; v2.push_back(v[i]); } if(v1[i]>max) { max=v1[i]; } } //if(cn==0) { // cout<<0; // cout<
后续题目会尽快更新!
发表评论
最新留言
关于作者
