蓝桥杯17114 残缺的数字

问题描述

七段码显示器是一种常见的显示数字的电子元件,它由七个发光管组成:

图依次展示了数字 0∼9 用七段码来显示的状态,其中灯管为黄色表示点亮,灰色表示熄灭。根据灯管的亮暗状态,我们可以用一个状态码(状态码是一个 7 位的二进制数字)来表示一个七段码,令灯管点亮时状态为 1,灯管熄灭时状态为 0,按照灯管 ABCDEFG 的顺序标识一个七段码,则数字 0∼9 的状态码为:

数字 状态码 数字 状态码
0 1111110 5 1011011
1 0110000 6 1011111
2 1101101 7 1110000
3 1111001 8 1111111
4 0110011 9 1111011

小蓝有一个喜爱的数字,长度为 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,则说明状态码不可能是这个数字

cpp 复制代码
#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;
}
相关推荐
Tisfy4 天前
LeetCode 2058.找出临界点之间的最小和最大距离:遍历+遇到极值则更新(这种题谁空间复杂度不是O(1)啊)
linux·数据库·leetcode·链表·题解·模拟·遍历
吞下星星的少年·-·7 天前
The 2025 ICPC Asia East Continent Online Contest (I) A题(模拟+贪心)
算法·贪心·模拟
謓泽11 天前
『51单片机』AD/DA
单片机·嵌入式硬件·51单片机·模拟·ad·da·謓泽
_Narcissus_15 天前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举
Tisfy20 天前
LeetCode 3090.每个字符最多出现两次的最长子字符串:二重循环 / 滑动窗口
算法·leetcode·字符串·题解·模拟·双指针·滑动窗口
OuO-220 天前
笔试强训 Day 44:最小差值、kotori 和素因子、dd 爱科学 1.0
二分查找·动态规划·贪心·模拟·记忆化搜索·递归·状态表示优化
gjjwh1 个月前
【2026年7月】 X-Plane12 v12.4.3-r1 和谐版完整版免费分享
模拟
Tisfy2 个月前
LeetCode 3867.数对的最大公约数之和:按题目说的做(gcd)
算法·leetcode·题解·模拟·最大公约数·gcd
Tisfy3 个月前
LeetCode 3838.带权单词映射:求和、取模、拼接(附python一行版)
python·算法·leetcode·字符串·题解·模拟·取模
Tisfy3 个月前
LeetCode 3689.最大子数组总值 I:What The Medium
算法·leetcode·题解·贪心·模拟·脑筋急转弯