#A0457. 坏掉的数码管

坏掉的数码管

题目描述

33DAI 家的电表用 nn 个八位数码管显示剩余电量。最近他发现数码管坏了几个二极管,导致显示的结果不可靠。

请你看看根据目前的数码管显示情况,他家的剩余电量有多少种可能性。


所谓八位数码管,指的是如下图左边用八个二极管来显示一个数字的电子元件。本题中我们给每个二极管都给了一个数字编号(181\sim 8)。

下图右边是数字 090\sim 9 的显示方式,比如对于数字 77,就是点亮编号为 1,2,31,2,3 的二极管,然后关闭其他二极管得到的。


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

输入格式

第一行一个整数 nn,表示有 nn 个八位数码管。

接下来 nn 行,每行一个长度为 77 的字符串 ss,第 ii 个字符对应着当前数码管中编号为 ii 的二极管的情况,为 YN 中的一个,分别表示亮和灭。

输出格式

一行一个整数,表示剩余电量有多少种可能性。

答案可能很大,只需要输出其对 988244353988244353 取余后的结果即可。

1
YNNYNNY
6
3
YNYYNYY
YYYYYYY
YYYYNYY
8

样例解释

数据规模与约定

对于 100%100\% 的数据,保证 n50n\le 50

  • 子任务 1(30 分):保证 n=1n=1
  • 子任务 2(30 分):保证 n=2n=2
  • 子任务 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;
}