题目1 : 电子数字

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

电子数字在生活中很常见,而许多的电子数字是由LED数码管制作而成。数字LED数码管一般由7个发光二极管封装在一起,组成'8'字型,引线在内部连接完成。如下图所示,我们可以对每个发光管进行编码从1到7。而数字0到数字9可以由这七根发光管的亮暗来表示。

对LED数码管的二极管进行编码

用LED数码管表示数字0-9

假设我们现在有从左到右排列好的K个LED数码管,并且我们已知每个数码管当前有哪些编号的二极管是亮着的,另外剩余的二极管由于某些原因,我们并不清楚它们的亮暗情况。由于已经有部分二极管是确定亮着的,所以每个LED数码管能表示的数字范围会有所缩小,譬如假设1号二极管已经确定是亮着的状态,那么这个LED数码管就不能表示数字1和4。

我们想知道的是,给定一个数N,在这K个LED数码管的当前亮暗的状态下,所有可能表示的数中,比N小的数有多少个。

注意,前导0是必须的,假设有4个数码管的话,'0000'表示0,'0123'表示123,即每个数的表示方法唯一。

输入

每个输入数据包含多个测试点。

第一行为测试点的个数 S ≤ 100。之后是 S 个测试点的数据。测试点之间无空行。

每个测试点的第一行为 K(1 ≤ K ≤ 5)和N(0 ≤ ≤ 109)。之后是K行,每行表示对应数码管已点亮的二极管的情况。每行至少包含一个数字,表示对应点亮的二极管的编号,即每个数码管至少有一根二极管是点亮的。二极管编号的范围保证在1到7之间,且每行无重复编号。

注意表示数码管点亮情况的每行数字之间以及行首行末之间可能存在冗余空格,每行的字符总长度不超过100。

输出

对于每个测试点,对应的结果输出一行,表示这K个数码管在当前状态下,所有可能表示的数中,比N小的数有多少个。

样例解释

第一个样例中,只有'020', '026', '028'符合要求。

第三个样例中,只有'000'符合要求。

样例输入

33 503 1 1 4 5 1 5 6 74 1001 2 3 4 56 7 1 1 7

样例输出

301思路:此题题目中变化形式有限只有10中情况,变化范围只能是从0到9,所以将0-9的二进制列出,以16进制存储,用于后续比较。比较方法:判断b的数码管形式是否包含a的数码管形式,其实就是比较两者的二进制位,a的二进制为1的位对应的b也要为1。最后用DFS进行递归,找出符合要求的进行统计输出。

代码:

#include <iostream>
#include <stdio.h>using namespace std;int DGNM[10] = {0x77,0x12,0x5D,0x5B,0x3A,0x6B,0x6F,0x52,0x7F,0x7B};//每个LED数码管表示的0-9数字的每一位排列的十六进制表示。int bin2dec(int * a)//将二进制转化为10进制。
{int t=1,sum=0;for(int i=7;i>-1;i--){if(a[i]!=0)sum+=a[i]*t;t*=2;}return sum;
}bool juge(int a,int b)//判断b的数码管排列是否包含a的形式
{for(int i=0;i<7;i++){if((a%2)==1&&(b%2)==0)//a中为1的位,在b中也要为1return false;a /=2;b /=2;}return true;}void DFS(int * dig,int cur,int sum,int N,int &flag,int l)
{if(cur == -1)//终止条件:一种排列完成。{if(sum < N){flag++;}}else{for(int i=0;i<10;i++){if(juge(dig[cur],DGNM[i])){sum +=i*l;l *=10;cout << dig[cur] << " " << sum << endl;DFS(dig,cur-1,sum,N,flag,l);l /=10;sum -=i*l;//还原sum,否则会出现溢出情况。}}}
}void Turnover(int K,int N)//主函数:处理输入格式
{int temp[5][7] = {0};int dig[5] = {0};for(int i=0;i<K;i++){char a;while((a=getchar())!='\n'){if(a!=' ')temp[i][a-'0'] = 1;}dig[i] = bin2dec(temp[i]);}int flag=0;DFS(dig,K-1,0,N,flag,1);cout << flag << endl;}int main()
{Turnover(1,1);return 0;
}

网易互娱2017实习生招聘在线笔试第一场-电子数字相关推荐

  1. 网易互娱2017实习生招聘在线笔试第一场-2源代码编译

    http://hihocoder.com/contest/ntest2016spring1/problem/2 拓扑排序 处理一下字符串 没什么好说的.. 时间限制:10000ms 单点时限:1000 ...

  2. 网易互娱2017实习生招聘在线笔试第一场-3划线

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小王近期在开发一种新的游戏引擎,可是近期遇到了性能瓶颈.于是他打算从最主要的画线功能開始分析优化. 画线事实上就是调用 ...

  3. 网易互娱2017实习生招聘在线笔试第一场-题目3

    题目3 : 画线 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈.于是他打算从最基本的画线功能开始分析优化.画线其 ...

  4. 网易互娱2017实习生招聘在线笔试第一场-1电子数字

    http://hihocoder.com/contest/ntest2016spring1/problem/1 时间限制:10000ms 单点时限:1000ms 内存限制:256MB  描述  电子数 ...

  5. 网易互娱2017实习生招聘在线笔试第一场 题目1 : 电子数字

    http://hihocoder.com/contest/ntest2016spring1/problem/1 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 电子数字在 ...

  6. 网易互娱2017实习生招聘在线笔试(二)

    题目2 : 源代码编译 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在网易游戏的日常工作中,C++ 是一门常用的语言.面对众多的 C++ 代码,等待源文件编译的漫长时 ...

  7. 网易互娱2017实习生招聘在线笔试--源代码编译

    描述 在网易游戏的日常工作中,C++ 是一门常用的语言.面对众多的 C++ 代码,等待源文件编译的漫长时间是个令人糟心的时刻,一直以来大家对此怨声载道.终于有一天,大家找到了你,一位优秀的程序员,请你 ...

  8. 网易互娱2017实习生招聘在线笔试(三)

    题目3 : 画线 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈.于是他打算从最基本的画线功能开始分析优化.画线其 ...

  9. 网易互娱2017实习生招聘在线笔试(一)

    题目1 : 电子数字 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 电子数字在生活中很常见,而许多的电子数字是由LED数码管制作而成.数字LED数码管一般由7个发光二极 ...

最新文章

  1. 人工智能实践:TensorFlow笔记学习(三)——TensorFlow框架
  2. 一个能从别人的观念来看事情,能了解别人心灵活动的人,永远不必为自己的前途担...
  3. 来自未来,2022 年的前端人都在做什么?
  4. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
  5. mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包
  6. iOS利用SDWebImage实现缓存的计算与清理
  7. 程序猿能力矩阵 — 敢測吗?看自己在哪个档次
  8. android 请求服务器抛io异常,HttpURLConnection调用getResponseCode()时抛出IOException异常...
  9. linux操作系统实训心得总结,操作系统实验报告心得体会
  10. Java开发环境安裝教程
  11. 深度Q学习——从入门到实践
  12. LoadRunner教程(8)-LoadRunner 负载生成器
  13. 为织梦cms列表页文章缩略图添加alt属性的方法
  14. JAVA MONGODB 查询时间段
  15. MySQL具体解释(5)-----------函数超全总结
  16. syntax error, expect ')' 数据库报错批量插入
  17. Android播放音频到耳机,Android音乐播放模式切换-外放、听筒、耳机
  18. 很受打动的一篇文章,很幽默让人想看完。
  19. 局域网计算机间的传输介质,计算机局域网知识点:传输介质
  20. vue.js — 安装Webpake创建一个完整的项目并上传至码云

热门文章

  1. Java常用API——ArrayList
  2. thinkphp3.1.3 getshell_CAS号 [91918] 生产工艺。 3,3二甲氧基联苯胺重氮氯化物
  3. MySQL导出CSV文件报错secure-file-priv权限受限mac
  4. oracle判断空值的函数nvl2,【PL/SQL】 NVL,NVL2,COALESCE 三种空值判断函数
  5. 静态时序分析(STA)相关概念
  6. java crlf_CRLF回车换行替换
  7. 【男士必须收藏】男士健身方法
  8. 带你通俗易懂的理解——线程、多线程与线程池
  9. 这门技术藏不住了,复杂简单化,一秒让你了解SD-WAN
  10. 【项目实战】Protobuf入门介绍以及如何生成proto对象文件