坏掉的数码管
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
Csvoner 家的电表用 个八位数码管显示剩余电量。最近他发现数码管坏了几个二极管,导致显示的结果不可靠。
请你看看根据目前的数码管显示情况,他家的剩余电量有多少种可能性。
所谓八位数码管,指的是如下图左边用八个二极管来显示一个数字的电子元件。本题中我们给每个二极管都给了一个数字编号()。
下图右边是数字 的显示方式,比如对于数字 ,就是点亮编号为 的二极管,然后关闭其他二极管得到的。

关于不可靠的显示结果,即有可能某些本来该亮的二极管没有亮,下面是一些例子:

输入格式
第一行一个整数 ,表示有 个八位数码管。
接下来 行,每行一个长度为 的字符串 ,第 个字符对应着当前数码管中编号为 的二极管的情况,为 Y
和 N
中的一个,分别表示亮和灭。
输出格式
一行一个整数,表示剩余电量有多少种可能性。
答案可能很大,只需要输出其对 取余后的结果即可。
1
YNNYNNY
6
3
YNYYNYY
YYYYYYY
YYYYNYY
8
样例解释

数据规模与约定
对于 的数据,保证 。
- 子任务 1(30 分):保证 。
- 子任务 2(30 分):保证 。
- 子任务 3(40 分):没有特殊限制。
%¥&@#
受近期 X8.7 级太阳耀斑影响,Csvoner 出题时用到的一段代码被错误地传输到了题面中:
#include <bits/stdc++.h>
using namespace std;
string s[10] = {
"YYYYYYN", "NYYNNNN", "YYNYYNY", "YYYYNNY", "NYYNNYY",
"YNYYNYY", "YNYYYYY", "YYYNNNN", "YYYYYYY", "YYYYNYY"};
int main()
{
for (int i = 0; i <= 9; i ++ )
{
if (s[i][0] == 'Y') cout << " **** \n"; else cout << " \n";
for (int j = 1; j <= 2; j ++ )
{
if (s[i][5] == 'Y') cout << "*"; else cout << " ";
cout << " ";
if (s[i][1] == 'Y') cout << "*\n"; else cout << " \n";
}
if (s[i][6] == 'Y') cout << " **** \n"; else cout << " \n";
for (int j = 1; j <= 2; j ++ )
{
if (s[i][4] == 'Y') cout << "*"; else cout << " ";
cout << " ";
if (s[i][2] == 'Y') cout << "*\n"; else cout << " \n";
}
if (s[i][3] == 'Y') cout << " **** \n"; else cout << " \n";
cout << "--------\n";
}
return 0;
}
XAZXOI Round 13 - Level 3
- Status
- Done
- Rule
- IOI
- Problem
- 4
- Start at
- 2025-4-19 19:00
- End at
- 2025-4-20 12:00
- Duration
- 2 hour(s)
- Host
- Partic.
- 10