坏掉的数码管
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
33DAI 家的电表用 个八位数码管显示剩余电量。最近他发现数码管坏了几个二极管,导致显示的结果不可靠。
请你看看根据目前的数码管显示情况,他家的剩余电量有多少种可能性。
所谓八位数码管,指的是如下图左边用八个二极管来显示一个数字的电子元件。本题中我们给每个二极管都给了一个数字编号()。
下图右边是数字 的显示方式,比如对于数字 ,就是点亮编号为 的二极管,然后关闭其他二极管得到的。
关于不可靠的显示结果,即有可能某些本来该亮的二极管没有亮,下面是一些例子:
输入格式
第一行一个整数 ,表示有 个八位数码管。
接下来 行,每行一个长度为 的字符串 ,第 个字符对应着当前数码管中编号为 的二极管的情况,为 Y
和 N
中的一个,分别表示亮和灭。
输出格式
一行一个整数,表示剩余电量有多少种可能性。
答案可能很大,只需要输出其对 取余后的结果即可。
1
YNNYNNY
6
3
YNYYNYY
YYYYYYY
YYYYNYY
8
样例解释
数据规模与约定
对于 的数据,保证 。
- 子任务 1(30 分):保证 。
- 子任务 2(30 分):保证 。
- 子任务 3(40 分):没有特殊限制。
%¥&@#
受近期 X8.7 级太阳耀斑影响,33DAI 出题时用到的一段代码被错误地传输到了题面中:
#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;
}