问题 C: 对撞
时间限制: 1 Sec 内存限制: 128 MB
[提交] [状态]
题目描述
小明发明了一个数字对撞机,两个位数相同的整数可以进行碰撞。碰撞过程中,将两个 整数的每一位进行比较,较小的那个数字会被撞得粉碎,较大的数字保留下来(如果两数 相同,都会保留)。例如下面例子中:

两个整数 13570 和 21673 碰撞后,对应数位上较小的值已经消失,碰撞的结果为:第一 个数字剩下 37,第二个数字剩下 2673。
现在小明想让你写一个程序来显示数字碰撞机的结果,输入两个整数,输出碰撞后的两 个数字。(注意最终结果不能包含多余的前导 0)

输入
第一行一个整数 x,表示输入的第一个整数。 第二行一个整数 y,表示输入的第二个整数。
输出
输出包含两行,第一个表示 x 碰撞后的结果。 第二行表示 y 碰撞后的结果。 若 x 或者 y 所有数位上的数字都消失了,该行输出“BOOM”注意都是大写的。
样例输入 Copy
【样例1】
13570
21673
【样例2】
300
500
【样例3】
1234
5678
样例输出 Copy
【样例1】
37
2673
【样例2】
0
500
【样例3】
BOOM
5678
提示
样例2解释
300第一位被撞碎了,剩下00,因为不能包含前导0,输出0。500没有任何一位被撞碎。
样例3解释
1234每一位都被撞碎了,输出“BOOM”,5678没有任何一位被撞碎。
【数据范围】
对于50%的数据,0≤x,y<10^9
对于80%的数据,0≤x,y<10^100,即x,y的长度不超过100。
对于100%的数据,0≤x,y<=10^1000,即x,y的长度不超过1000。保证所有x和y的位数相同,且x,y本身没有多余的前导0

思路:
好吧这是一道不算很难的题,但是当时就是卡了我好久qaq
先for循环判断每一位数字的大小,我把小的那一位标记为-1。然后先判断这个数组最后是否全是-1,如果全是-1就输出BOOM。如果不是全为-1呢,问题就来了,我写了一个函数去判断这个数组里是否只有-1和0,这样的话应该去掉多余的0,直接输出0,然后我自信满满就提交,结果wa的一败涂地
后来这样一组样例让我发现了错误

5030
6000030
6000

按理说应该输出30和6000,结果多了一个零
最后在队友的帮助下写下了标记这个东西,在不等于-1的时候输出,如果这一位不是零,就标记一下,等到有一位是零并且做过标记的话,这个零就可以输出,这样就保证去掉了前导零

最后AC的代码是这样的
其实我也觉得自己写的很丑

string s1,s2;
int a[1005],b[1005];
int len1,len2;
int judge(int a[])
{for(int i=0;i<len1;i++){if(a[i] != -1)return 0;}return 1;
}int judge2(int a[])
{for(int i=0;i<len1;i++){if(a[i] != 0 && a[i] != -1)return 0;}return 1;
}int main()
{cin >> s1 >> s2;len1 = s1.size();len2 = s2.size();for(int i=0;i<len1;i++)  a[i] = s1[i]-'0';for(int i=0;i<len2;i++)  b[i] = s2[i]-'0';if(len1 == len2){for(int i=0;i<len1;i++){if(a[i] > b[i])  b[i] = -1;else if(a[i] < b[i]) a[i] = -1;}}int flag = 0;if(judge(a)){ //如果全是-1输出BOOMprintf("BOOM\n");}else if(judge2(a)){ //如果除了-1就是0就输出0 printf("0\n");}else{for(int i=0;i<len1;i++){if(a[i] != -1){if(a[i] != 0){flag = 1;printf("%d",a[i]);}else if(a[i] == 0 && flag == 1)//这一位是零,前一位不是这个零正常输出 printf("%d",a[i]);}}printf("\n");}flag = 0;if(judge(b)){printf("BOOM\n");}else if(judge2(b)){printf("0\n");}else{for(int i=0;i<len2;i++){if(b[i] != -1){if(b[i] != 0){printf("%d",b[i]);flag = 1;   }else  if(b[i] == 0 && flag == 1)printf("%d",b[i]);}}printf("\n");}return 0;
}

个人训练赛第二十场:对撞相关推荐

  1. 2018年新生个人训练赛第十场(第29-30届宁波市信息学竞赛小学组)

    问题 A: 幸运数字III [ 提交][ 状态][ 讨论版] 题目描述 小李非常喜欢数字4和7,看到一个数字他就想快速计算出因子里面分别有几个4和7,但是智商捉急的他总是要算很久,喜欢编程的你能够帮助 ...

  2. 2018年ACM俱乐部个人训练赛第二十一场.A.微信群

    问题 A: 微信群 时间限制: 1 Sec   内存限制: 128 MB 提交: 272   解决: 67 [ 提交][ 状态][ 讨论版][命题人: admin] 题目描述 众所周知,一个有着6个人 ...

  3. 19级算法训练赛第七场

    19级算法训练赛第七场 传送门:https://vjudge.net/contest/362412#problem/J A - 程序设计:合并数字 蒜头君得到了 n 个数,他想对这些数进行下面这样的操 ...

  4. 2021UPC个人训练赛第47场

    个人训练赛第47场 A: 加工零件(最短路) 问题 A: 加工零件时间限制: 1 Sec 内存限制: 128 MB 题目描述 凯凯的工厂正在有条不紊地生产一种神奇的零件,神奇的零件的生产过程自然也很神 ...

  5. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

  6. 2021年度训练联盟热身训练赛第五场

    2021年度训练联盟热身训练赛第五场 链接:https://ac.nowcoder.com/acm/contest/13926 A Binary Seating #include<bits/st ...

  7. 2021年度训练联盟热身训练赛第八场

    目录 2021年度训练联盟热身训练赛第八场 A-Fire on Field 题意 思路 代码 B-Gene Tree 题意 思路 代码 I-Thread Knots 题意 思路 代码 J-Triang ...

  8. 2021年度训练联盟热身训练赛第三场赛后补题

    2021年度训练联盟热身训练赛第三场赛后补题 A Circuit Math [题目分析] [代码展示] B Diagonal Cut [题目分析] [代码展示] C Gerrymandering [题 ...

  9. 2021年度训练联盟热身训练赛第三场(待补)

    文章目录 前言 一.Circuit Math(后缀表达式---栈&&fgets) 二.Diagonal Cut(gcd最大公因数,数论) 三.expected primary-expr ...

最新文章

  1. 支撑Spring的基础技术:泛型,反射,动态代理,cglib等
  2. SGI重获新生 有望下月摆脱破产保护
  3. CSE 5/7350 – Project
  4. 利用金山快盘云服务搭建自己的SVN服务器
  5. MySQL数据库(六) 一一 基本操作之事物和索引
  6. python怎么提交作业_python分析作业提交情况
  7. 《RECURRENT BATCH NORMALIZATION》
  8. request.getRequestURL()和request.getRequestURI()区别
  9. java子线程切换到主线程_Android子线程切换到UI线程方法总结
  10. 【Python】python网络协议
  11. TensorFlow 和keras有什么区别?
  12. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
  13. 今天下午又是在教室里坐了一个下午,头有点晕
  14. 大型软件工作站计算机性能配置要求,推荐配置7.3万元的高性能服务器计算机工作站(全文)...
  15. 17万用来助学,能做什么?
  16. 地平线摄像头的音频调试至国际平台
  17. wpa_supplicant 工具操作wifi模块
  18. 王子与公主的爱情故事新结局
  19. 国内商务邮箱哪个好用?电子邮箱怎么申请?
  20. 大学计算机学院操行表个人小结,大学生操行鉴定表个人总结

热门文章

  1. 【数据库数据恢复】Sql Server数据库数据恢复案例
  2. 全球顶尖大学已将区块链加入其课程
  3. CMMI入门 - 通用实践的实施GP 2.8-GP 2.10
  4. 校园表白墙告白墙表白网站程序源码搭建教程
  5. ggplot2图形排版:patchwork包简单入门
  6. 查看打开物料账期 MMRV 和 MMPV
  7. Apple Pay 在线远程支付
  8. Linux工具学习之【git】
  9. Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。
  10. MFC写入xls文件示例