励志用更少的代码做更高效的表达


问题描述:

为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组
(以下称A组,B组,C组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。
每个文件中存储的是学生的学号。
由于工作需要,我们现在想知道:
既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?
请你统计该数字并通过浏览器提交答案。
注意:答案是一个整数,不要提交任何多余的内容。


思路整理

本题的思路很简单, A组数据与B组数据做交集, 得到D组数据, 与C组数据做交集, 最后D-C为正解。

但如何将数据放入容器,再求交集呢?难点有二,其一是如何开辟数组,其二是如何将数据录入数组。

几种思路分析:

1 最简便的方法当然是使用java, 形如:int a[] = {...} 直接动态开辟数组,无需计算数组的长度 , 香爆了!

2 使用word做字符替换,查找出每组数据的个数, (word统计出现次数的用法见这篇博客——>传送门1)从而开辟数组的空间,使用scanf()或直接赋值的方法得到数据数组。

3 还有一种很巧妙的思路, 我们可以人为的输入某些值, 来代表一组数据录入的结束。 比如:使用while循环做输入, 当识别到-1时, 代表输入一组数据的结束, 这样就可以非常方便的录入三组数据!


注意:

1 若使用scanf输入数据, 要注意scanf("%d,", &x), 逗号后面没有空格, 否则会要求我们多输入一个数据。也就是scanf的吃空格行为。具体原因和解释见这篇博客——>传送门2

2 不用担心前导零的影响, 因为用int做输入时会忽略前导零。


代码展示了一种非常巧妙的方法, 也就是基于思路3的用法。 只用了15行代码就解决了问题!


代码展示

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e8+10;
bool book[3][maxn];
int main() {int i,val,cur,ans;cur=0;while(scanf("%d,",&val)!=EOF)if(val==-1) cur++;else book[cur][val]=1;ans=0;for(i=0;i<100000000;i++)if(book[0][i]&&book[1][i]&&!book[2][i]) ans++;printf("%d\n",ans);
return 0; }

输出结果: 20


最重要的一点,我们的目的是解题, 不是炫技! 实用才是王道!

15行代码AC_ 【蓝桥杯】兴趣小组(解题报告+思考)相关推荐

  1. 25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)

    励志用少的代码做高效表达 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需 ...

  2. 16行代码AC_蓝桥杯 2017年C组第三题 算式900(暴力解法+DFS解法)

    励志用更少的代码做更高效的表达 题目描述: 小明的作业本上有道思考题: 看下面的算式: (□□□□-□□□□)*□□=900 其中的小方块代表0~9的数字,这10个方块刚好包含了0~9中的所有数字. ...

  3. 24行代码AC_蓝桥杯2019省赛 试题 D: 数的分解

    问题描述 把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+10 ...

  4. Java实现第八届蓝桥杯兴趣小组

    兴趣小组 为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组 (以下称A组,B组,C组). 每个小组的学生名单分别在[A.txt],[B.txt]和[C.txt]中. 每个文件中存储的是学生的 ...

  5. 23行代码AC_2017 蓝桥杯A组 正则问题(解题报告)

    励志用少的代码做高效表达 题目描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx)) ...

  6. 第九届(2018)蓝桥杯 山东省赛解题报告(题目+分析+代码)

    1标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. [答案]:125 2标题:明码 汉字的字形 ...

  7. 2020年蓝桥杯模拟赛解题报告(Python真香)

    第一题 单位变换 题目 [问题描述] 在计算机存储中,15.125GB是多少MB? [答案提交] 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填 ...

  8. 第三届蓝桥杯java本科解题报告

    1.  [结果填空]黄金分割数0.618与美学有重要的关系.舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子 ...

  9. 黑进iPhone让手机崩溃重启,只需15行代码:iOS漏洞你可知?

    黑栗子 发自 麦蒿寺 量子位 出品 | 公众号 QbitAI 有人找到了iOS系统的弱点. TechCrunch报道,一个名叫Sabri Haddouche的网络安全研究人员发推特说,只要15行CSS ...

最新文章

  1. python b64 图片处理
  2. 5G 承载网 — Overview
  3. 信息系统项目管理师:第6章:项目进度管理-章节重点汇总
  4. Exchange Tech Issues 参考网站
  5. 原型模式 java 深浅_JAVA设计模式---原型模式--浅客隆和深克隆
  6. #!/bin/sh与#!/bin/bash的区别
  7. 【HTTP】POST 与 PUT 方法区别
  8. 解决python偶尔读文件报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 1022-1023: unex....
  9. 一代人的记忆!又一波微信表情默默消失了
  10. html微软雅黑字体模糊,如何解决WinXP下微软雅黑字体不清晰的问题
  11. 测试人员该学习哪些Linux知识
  12. [lammps教程]OVITO绘制原子应力云图
  13. 迅雷2019校园招聘 内推码
  14. 2022年最值得学习的5款开源Java框架
  15. 蜀门EVP文件加解密源码
  16. 15136-34-2,Cyclo(Leu-Trp),c(Leu-Trp),cyclo-L-Trp-L-Leu
  17. Fibo Rule规则引擎可视化
  18. 01.04_计算机基础知识(键盘功能键和快捷键)
  19. Java写win10激活码_win10系统配置java环境 生成密钥
  20. Tesla M40 使用分享

热门文章

  1. 微服务架构统一安全认证设计与实践
  2. 世界上没有技术驱动型公司
  3. 打造杰出软件开发团队的12条指导建议
  4. 区间调度之区间合并问题
  5. LiveVideoStackCon 2020北京站-售票通道关闭倒计时1天
  6. 通过改进视频质量评估提升编码效率
  7. LiveVideoStack线上分享第四季(一):沉浸式音频技术的采集,传输,播放,以及应用场景初探...
  8. Aupera:FPGA让视频编码与AI结合水到渠成
  9. Ubuntu下搭建Janus Server
  10. 腾讯云EMR基于YARN针对云原生容器化的优化与实践