L1 - 019 谁先倒下

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。

下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。

输入格式:

输入第一行先后给出甲、乙两人的酒量(不超过100的非负整数),以空格分隔。下一行给出一个正整数N(≤100),随后N行,每行给出一轮划拳的记录,格式为:

甲喊 甲划 乙喊 乙划

其中是喊出的数字,是划出的数字,均为不超过100的正整数(两只手一起划)。

输出格式:

在第一行中输出先倒下的那个人:A代表甲,B代表乙。第二行中输出没倒的那个人喝了多少杯。题目保证有一个人倒下。注意程序处理到有人倒下就终止,后面的数据不必处理。

#include<bits/stdc++.h>
using namespace std;
int A_jiu,B_jiu;
int A_han,B_han,A_hua,B_hua;
int A_cnt,B_cnt;
int n;
int main()
{cin>>A_jiu>>B_jiu;cin>>n;int flag = 1;for(int i = 0;i<n;i++){cin>>A_han>>A_hua>>B_han>>B_hua;if(flag){if(A_han+B_han == A_hua&&A_han+B_han != B_hua) A_cnt++;if(A_han+B_han == B_hua&&A_han+B_han != A_hua) B_cnt++;if(A_cnt>A_jiu) {cout<<"A"<<endl;cout<<B_cnt;flag = 0;}if(B_cnt>B_jiu){cout<<"B"<<endl;cout<<A_cnt;flag = 0;}}}cout<<endl;return 0;
}

L1 - 帅到没朋友的人

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。

输入格式:

输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。

注意:没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。

输出格式:

按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出No one is handsome

注意:同一个人可以被查询多次,但只输出一次

#include<bits/stdc++.h>
using namespace std;int n;
int k,x;
int m;
set<int> s;
int main()
{cin>>n;for(int i = 0;i<n;i++){cin>>k;if(k == 1){cin>>x;}else{for(int j = 0;j<k;j++){cin>>x;s.insert(x);}}}cin>>m;int cnt = 0;for(int i = 0;i<m;i++){cin>>x;if(!s.count(x)) {if(cnt == 0) cout << setw(5) << setfill('0') << x;else cout<<' ' << setw(5) << setfill('0') << x;s.insert(x);cnt++;}}if(cnt!=0) cout<<endl;if(cnt == 0) cout<<"No one is handsome"<<endl;return 0;
}

L1 - 023 输出GPLT

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

#include<bits/stdc++.h>
using namespace std;string s;
int a[4];
char ch[4] = {'G','P','L','T'};
int main()
{cin>>s;int cnt = 0;int len = s.length();for(int i = 0;i<len;i++){if(s[i] == 'G' || s[i] == 'g') a[0]++,cnt++;if(s[i] == 'P' || s[i] == 'p') a[1]++,cnt++;if(s[i] == 'L' || s[i] == 'l') a[2]++,cnt++;if(s[i] == 'T' || s[i] == 't') a[3]++,cnt++;}int temp = 0;while(cnt){temp %= 4;if(a[temp] != 0){cout<<ch[temp];a[temp]--;temp++;cnt--;}else{temp++;}}cout<<endl;return 0;
}

L1-025 正整数A+B

题的目标很简单,就是求两个正整数AB的和,其中AB都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:

输入在一行给出AB,其间以空格分开。问题是AB不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:

如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?

#include<bits/stdc++.h>
using namespace std;string s1,s2;
int main()
{cin>>s1;getchar();getline(cin,s2);for(int i = 0;i<s1.length();i++){if(!isdigit(s1[i]) || stoi(s1)<1 || stoi(s1)>1000){s1 = "?";break;}}for(int i = 0;i<s2.length();i++){if(!isdigit(s2[i]) || stoi(s2)<1|| stoi(s2)>1000){s2 = "?";break;}}if(s1 == "?" || s2 == "?"){cout<<s1<<" + "<<s2<<" = ?";}else{cout<<s1<<" + "<<s2<<" = "<<stoi(s1)+stoi(s2);}return 0;
}

L1 - 027 出租(20分)

下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

#include<bits/stdc++.h>
using namespace std;
bool flag[11];
int arr[11];
int main()
{string s;cin>>s;for(int i = 0;i<s.length();i++){flag[s[i] - '0'] = 1;}int temp = 0;for(int i = 9;i>=0;i--){if(flag[i]) arr[temp] = i,temp++;}cout<<"int[] arr = new int[]{";for(int i = 0;i<temp;i++){if(i == 0) cout<<arr[i];else cout<<","<<arr[i];}cout<<"};"<<endl;cout<<"int[] index = new int[]{";for(int i = 0;i<s.length();i++){for(int j = 0;j<temp;j++){if(s[i] - '0' == arr[j]){if(i == 0){cout<<j;}else{cout<<','<<j;}}}}cout<<"};"<<endl;return 0;
}

L1-030 一帮一 (15 分)

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

#include<bits/stdc++.h>
using namespace std;struct Node {int sex;string name;
} node[55];
bool vis[55];
int n;
int main() {cin>>n;for(int i = 0; i<n; i++) {cin>>node[i].sex>>node[i].name;}for(int i = 0; i<n; i++) {if(!vis[i]) {for(int j = n-1; j>=0; j--) {if(!vis[j] && node[j].sex!= node[i].sex){cout<<node[i].name<<' '<<node[j].name<<endl;vis[j] = 1;break;}}}}return 0;
}

L1-031 到底是不是太胖了 (10 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:

输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:

为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!

#include<bits/stdc++.h>
using namespace std;double hight,weight;
int n;
int main()
{cin>>n;while(n--){cin>>hight>>weight;double bz = (hight - 100)*0.9*2;if(abs(bz - weight)<bz*0.1) cout<<"You are wan mei!"<<endl;else if(weight>bz) cout<<"You are tai pang le!"<<endl;else cout<<"You are tai shou le!"<<endl;}return 0;
}

L1-032 Left-pad (20 分)

根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。

输入格式:

输入在第一行给出一个正整数N(≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。

输出格式:

在一行中输出结果字符串。

#include<bits/stdc++.h>
using namespace std;int n;
char ch;
string s;
int main()
{cin>>n;cin>>ch;getchar();getline(cin,s);if(n>=s.length()){for(int i = 0;i<n-s.length();i++) cout<<ch;cout<<s<<endl;;}else{for(int i = s.length() - n;i<s.length();i++){cout<<s[i];}cout<<endl;}return 0;
}

L1-033 出生年 (15 分)

以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

输入格式:

输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

输出格式:

根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

#include<bits/stdc++.h>
using namespace std;int y,dif;
int age;
bool check(int y,int dif){set<int> s;if(y<1000) s.insert(0);while(y){s.insert(y%10);y/=10;}if(s.size() == dif) return 0;else return 1;
}
int main()
{cin>>y>>dif;while(check(y+age,dif)){age++;}cout<<age<<' ';printf("%04d",age+y);return 0;
}

L1-035 情人节 (15 分)

以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。

输入格式:

输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。

输出格式:

根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”。

#include<bits/stdc++.h>
using namespace std;int i;
int main()
{string a,b,c;while(c!="."){cin>>c;i++;if(i == 2) a = c;if(i == 14) b = c;}i--;if(i<2){cout<<"Momo... No one is for you ...";}else if(i>=2&&i<14){cout<<a<<" is the only one for you...";}else if(i>=14){cout<<a<<" and "<<b<<" are inviting you to dinner...";}return 0;
}

PTA 程序设计天梯赛【day2】相关推荐

  1. PTA 程序设计天梯赛(41~60题)

    文章目录 41.整除光棍 (20 分) 42. 装睡 (10 分) 43.矩阵A乘以B (15 分) 44. 倒数第N个字符串 (15 分) 45.打折 (5 分) 46. 2018我们要赢 (5 分 ...

  2. PTA程序设计天梯赛 L2题解报告(40/40)

    目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? L2-005 集合相似度 (25 分) L2-00 ...

  3. PTA团体程序设计天梯赛篇(五)---- 难题篇一(30分题目)

    PTA团体程序设计天梯赛 数据结构类型 L3-002 特殊堆栈(树状数组) L3-003 社交集群(并查集) 搜索 L3-004 肿瘤诊断(三维bfs) 确保bfs只遍历一次的方法 图论 L3-005 ...

  4. PTA团体程序设计天梯赛-练习集(3)

    PTA团体程序设计天梯赛-练习集 L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句"Hello World!"就可以 ...

  5. PTA团体程序设计天梯赛-练习集

    PTA团体程序设计天梯赛-练习集 L1-024 后天 L1-025 正整数A+B L1-026 I Love GPLT L1-027 出租 L1-029 是不是太胖了 L1-030 一帮一 L1-03 ...

  6. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  7. PTA|团体程序设计天梯赛-练习题库集

    文章目录 关于爬取脚本的编写 L1-001 Hello World! (5 分) L1-002 打印沙漏 (15 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5 分) ...

  8. PTA团体程序设计天梯赛-练习集Level-1(参考代码C语言/Python版)

    本题目集截止到2022年天梯赛 受个人水平限制,<PTA团体程序设计天梯赛-练习集>中暂时只能把Level-1的题目做出来(也许有些Level-2的题可以写出来?)-我不是专门搞竞赛的,参 ...

  9. PTA团体程序设计天梯赛(L1-031~L1-040)

    PTA团体程序设计天梯赛[L1-031~L1-040] L1-031 到底是不是太胖了 (10 分) L1-032 Left-pad (20 分) L1-033 出生年 (15 分) L1-034 点 ...

最新文章

  1. LeetCode Python题解(二)----排序
  2. python使用matplotlib可视化间断条形图、使用broken_barh函数可视化间断条形图、可视化定性数据的相同指标在时间维度上的差异
  3. kaliLinux下保持匿名
  4. ue4 gpu构建_待在家里吗 为什么不构建GPU Box!
  5. python接口自动化(四)--接口测试工具介绍(详解)
  6. 软件测试—软件测试基础知识—(五)软件测试模型
  7. pytorch之创建数据集
  8. dk7与jdk8环境共存与切换
  9. CSS快速入门-基本选择器
  10. HiJson简要说明
  11. CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
  12. echarts立体柱状图
  13. 兼容 iOS retina 高清屏
  14. 【华为编程大赛】投票问题
  15. 有return的情况下try catch finally的执行顺序(最有说服力的总结) 后面的神评论
  16. 上线啦,PP.io!
  17. 操作系统面试题(史上最全面试题,精心整理100家互联网企业,面试必过)
  18. Echarts柱状图上加图标
  19. 前后端项目对接流程梳理
  20. matlab求隐函数二阶导,求隐函数二阶导数.ppt

热门文章

  1. 游戏随机地图生成方法
  2. [医疗信息化][DICOM教程]开篇介绍,新冠肺炎为医疗保健信息产业带来新的的紧迫性...
  3. 奇异矩阵能lu分解条件_矩阵分析-期末复习笔记(上)
  4. 异或(XOR)运算加密/解密在线工具
  5. oracle ods平台建立,如何利用Oracle表分区技术建设ODS平台
  6. 阿里云修改主机名hostname
  7. 推荐系统与深度学习(九)——NCF模型原理
  8. 万字长文,会员体系拆解
  9. CANoe.DiVa操作指南——配置特定测试序列
  10. 20_django项目的部署和总结