题目形貌
七段码显示器是一种常见的显示数字的电子元件,它由七个发光管组成:
图依次展示了数字 0∼9 用七段码来显示的状态,其中灯管为黄色表示点亮,灰色表示熄灭。根据灯管的亮暗状态,我们可以用一个状态码(状态码是一个 7 位的二进制数字)来表示一个七段码,令灯管点亮时状态为 1,灯管熄灭时状态为 0,按照灯管 ABCDEFG 的顺序标识一个七段码,则数字 0∼9 的状态码为:
数字状态码数字状态码01111110510110111011000061011111211011017111000031111001811111114011001191111011 小蓝有一个喜爱的数字,长度为 18 位,每一位用一个七段码显示器来展示 (每位只能是 0∼9,可以包罗前导零),由于灯管故障,一些本该点亮的灯管处于了熄灭状态。例如,对于一个长度为 2 的数字来说,当两个七段码对应的状态码分别为: 1011111(高位)、1110011(低位)时,原本的数字大概会是: 68、69、88、89,有 4 种大概的值。
18 个七段码显示器对应的状态码分别为:
- 0000011
- 1001011
- 0000001
- 0100001
- 0101011
- 0110110
- 1111111
- 0010110
- 0101001
- 0010110
- 1011100
- 0100110
- 1010000
- 0010011
- 0001111
- 0101101
- 0110101
- 1101010
复制代码
其中每行表示一个七段码对应的的状态码(按照数字的高位到低位给出)。请你判断下小蓝喜爱的数字有多少种大概的值。
判断每个残缺的状态码能对应的数字个数,相乘
判断一个残缺的状态码对应的数字个数:
如果状态码的某一位是1,但数字的尺度状态码是 0,则说明状态码不大概是这个数字
- #include<iostream>
- #include<string>
- using namespace std;
- //数字 0~9 的状态码
- char c[10][8]={"1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1111011"};
- int ans = 1;
- int check(string s)
- {
- int cnt = 0; //记录可能对应的数字个数
- bool flag = 1;
-
- for(int i=0; i<=9; ++i) //遍历数字0到9
- {
- flag = 1; //假设当前状态码能匹配到一个数字
- for(int j=0; j<=6; ++j) //遍历七段码的每一位
- {
- if(s[j]=='1' && c[i][j]=='0')
- {
- //如果状态码 s的第 j位是 '1',但数字 i的标准状态码 l[i][j] 是 '0'
- //则说明状态码 s 不可能是数字 i
- flag = 0;
- break;
- }
- }
- if(flag) cnt++;
- }
- return cnt;
- }
- int main()
- {
- string s;
- for(int i=1; i<=18; ++i)
- {
- cin>>s;
- ans *= check(s);
- }
-
- cout<<ans;
-
- return 0;
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |