当前位置: 首页 > news >正文

PTA天梯赛L1 091-100题目解析

目录

1.L1-091 程序员买包子

2.L1-092 进化论

3.L1-093 猜帽子游戏

4.L1-094 剪切粘贴

5.L1-095 分寝室

6.L1-096 谁管谁叫爹

7.L1-097 编程解决一切

8.L1-098 再进去几个人

9.L1-099 帮助色盲

10.L1-100 四项全能


1.L1-091 程序员买包子

#include<iostream>using namespace std;int n,m,k;
string x;
signed main(){cin>>n>>x>>m>>k;if (k==n) cout<<"mei you mai "<<x<<" de";else if (k==m) cout<<"kan dao le mai "<<x<<" de";else cout<<"wang le zhao mai "<<x<<" de";	return 0;
}

2.L1-092 进化论

#include<iostream>using namespace std;int n;int a,b,c;
signed main(){cin>>n;for(int i=0;i<n;i++){cin>>a>>b>>c;if (a*b==c ){cout<<"Lv Yan"<<endl;}else if (a+b==c){cout<<"Tu Dou"<<endl;}else if (a*b!=c && a+b!=c){cout<<"zhe du shi sha ya!"<<endl;}}return 0;
}

3.L1-093 猜帽子游戏

#include<iostream>using namespace std;int n,k;
int arr[110];int res[110];//  对arr 和  res的前n个结果进行判断
//每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。
//用数字 1 表示黑色、2 表示黄色之外,0 表示这个宝宝弃权不猜。
bool check(int n){bool errors=false,bingo=false;for(int i=1;i<=n;i++){if (res[i]==0) continue;if (res[i]==arr[i]) bingo=true;else errors=true;}if (bingo && !errors) return true;return false;
} 
signed main(){cin>>n;for(int i=1;i<=n;i++){cin>>arr[i]; }cin>>k;for(int i=0;i<k;i++){for(int j=1;j<=n;j++){cin>>res[j];}if (check(n)){cout<<"Da Jiang!!!"<<endl;}else {cout<<"Ai Ya"<<endl;}}return 0;
}

4.L1-094 剪切粘贴

解析:

注意string相关的API及其边界即可。

#include<iostream>
#include<string>
using namespace std;string inits;
int n;string a,b;
int starts,overs;signed main(){cin>>inits;cin>>n;for(int i=0;i<n;i++){cin>>starts>>overs>>a>>b;string cut=inits.substr(starts-1,overs-starts+1);string findStr=a+b;// 切掉 inits.erase(starts-1,overs-starts+1);// 插入int pos=inits.find(findStr);if (pos != string::npos){// 也可以找到第一个b所在的index进行插入inits.insert(pos+a.size(),cut);} else {inits+=cut;}}	cout<<inits<<endl;return 0;
}

5.L1-095 分寝室

解析:

将男女每个寝室分配人数,在2-Nx之间进行枚举即可,然后得到人数差最小的方案

题目奇怪的是10^5数据范围的情况下,n^2算法不会超时,应该数据范围太弱了

#include<iostream>
#include<algorithm>
using namespace std;#define debug(x) cout<<"变量"<<#x<<"的值是"<<x<<endl;int n0,n1,n;int res=1e5+10;bool flag=false;
int value=-1;
signed main(){cin>>n0>>n1>>n;for(int i=2;i<=n0;i++){if(n0%i==0){for(int j=2;j<=n1;j++){if (n1%j==0 && n0/i+n1/j==n && abs(i-j)<res){res=abs(i-j);value=i;flag=true;break;}}}}if (flag){cout<<n0/value<<" "<<n-n0/value<<endl;}else {cout<<"No Solution"<<endl;}return 0;
}

6.L1-096 谁管谁叫爹

#include<iostream>using namespace std;//#define int long long
int n;
int a,b;inline int calcOne(int num){int sum=0;while(num){sum+=num%10;num/=10;	}return sum;
}
signed main(){cin>>n;for(int i=0;i<n;i++){cin>>a>>b;int sa,sb;sa=calcOne(a);sb=calcOne(b);if (a%sb==0 && b%sa!=0){cout<<"A"<<endl;}else if (a%sb!=0 && b%sa==0){cout<<"B"<<endl;}else {if (a>b) cout<<"A"<<endl;else cout<<"B"<<endl;}}	return 0;
}

7.L1-097 编程解决一切

#include<iostream>
#include<iomanip>
#include<vector>
#include<cmath>
#include<utility>
#include<algorithm>//#include<sstream>
//#include<cctype>using namespace std;signed main(){cout<<"Problem? The Solution: Programming."; return 0;
} 

8.L1-098 再进去几个人

#include<iostream>
#include<iomanip>
#include<vector>
#include<cmath>
#include<utility>
#include<algorithm>//#include<sstream>
//#include<cctype>using namespace std;int a,b;signed main(){cin>>a>>b;cout<<b-a;return 0;
} 

9.L1-099 帮助色盲

解析:

这道题很恶心的是,题目描述很垃圾

其一、对于输入数据描述不一致。前面提到“前方两米内有人”,后面又是“前方两米内是否有同向行走的人”,实际上这两个表述的都是后者的意思。

其二、对于部分情况不交代。比如在黄灯时,提示音不工作,但是色盲怎么执行策略,这个逻辑没有提出。应该是按照生活常识,经历“绿灯-黄灯-红灯-绿灯”的过渡,默认黄灯也要停止。所以在非绿灯时,行人都应该停止前进。(哪怕是在红灯时,有同向行人闯红灯,也要停下来)

感觉命题组出题审查不够全面,每年L1系列都会出一道含义模糊的题面,不知道是故意的还是确实语文水平有待提高。

#include<iostream>
#include<iomanip>
#include<vector>
#include<cmath>
#include<utility>
#include<algorithm>//#include<sstream>
//#include<cctype>using namespace std;int laten_color; //  0 表示红灯、1 表示绿灯、2 表示黄灯
int status; // 取值为 0 表示前方两米内没有同向行走的人、1 表示有。signed main(){cin>>laten_color>>status;// 当前交通灯为红灯或绿灯时if (laten_color == 0 || laten_color == 1) {// 有同向行走的人,则患者自己可以判断不提示 if(status) cout<<"-"<<endl<<( laten_color == 1 ? "move":"stop")<<endl;else {if (laten_color) cout<<"dudu"<<endl<<"move"<<endl;else cout<<"biii"<<endl<<"stop"<<endl;}// 黄灯必须停止,这里题目没说明 } else cout<<"-"<<endl<<"stop"<<endl;return 0;
} 

10.L1-100 四项全能

#include<iostream>
#include<iomanip>
#include<vector>
#include<cmath>
#include<utility>
#include<algorithm>//#include<sstream>
//#include<cctype>using namespace std;int n,m,tmp,sum = 0;
vector<int> person_num;signed main(){cin>>n>>m;for(int i=0;i<m;i++) {cin>>tmp;sum +=tmp;}int k = sum / n; // 最大值为mif (k>= m-1) {cout<<sum - n*(m-1)<<endl;} else cout<<0;return 0;
} 

相关文章:

  • CSS知识补充 --- 控制继承
  • 阿里巴巴开源的 分布式事务解决方案Seata
  • 第六章 进阶24 小枫的学业
  • 软件测试题
  • DirectShowPlayerService::doRender: Unresolved error code 80040266
  • 【蓝牙】Qt4中向已配对的手机发送PDF文件
  • 《Go语言圣经》通过接口解耦包依赖
  • C++ 泛型编程利器:模板机制
  • OSCP备战-LordOfTheRoot靶机复现步骤
  • UniSAL:用于组织病理学图像分类的统一半监督主动学习方法|文献速递-深度学习医疗AI最新文献
  • 前端工程结构设计指南:如何让模块解耦、易维护、可拓展
  • 京东云 centos vim有操作混乱的问题
  • C/C++ 高频八股文面试题1000题(一)
  • AI 产品的“嵌点”(Embedded Touchpoints)
  • 考研英语作文评分标准专业批改
  • Llama 4模型卡片及提示词模板
  • 简单的 ​Flask​ 后端应用
  • 汽车加气站操作工考试题库含答案【最新】
  • 《棒球青训》打造几个国家级运动基地·棒球1号位
  • 阿里云OSS对象云储存入门操作
  • 网站建设总体流程/互联网平台推广怎么做
  • seo技术什么意思/新网站 seo
  • 网站建设南通/站长工具免费
  • 湛江网站制作/百度联盟官网登录入口
  • 江苏优化网站公司哪家好/站长查询域名
  • 如何推广网站运营/自然搜索优化