P0686

打电话(tel)

打电话(tel)

龙先生是一位著名的记者,平时最喜欢报道一些鲜为人知的故事。最近,由于听说索马里海盗猖獗,他打算实地探访,做一次深入调查。

龙先生联系了索马里当地的一些朋友,做了周密的计划:坐船从三亚出发,越过南海,穿过印度洋,最后到达索马里海域的亚丁湾。可就在船离海岸仅 1010 公里时,突然有一伙海盗突袭客船,所有人都被劫持到了索马里城内。

在人质被运送到“海盗基地”的途中,龙先生凭借多年的经验,趁海盗不注意跃下了卡车,在无数枪声中拼命向外跑去。跑了几分钟后,龙先生突然看到一个电话亭。他迅速向电话亭奔去,想打电话向住在索马里的朋友求助。然而,随着追赶的脚步声越来越近,龙先生估计留给自己打电话的时间最多只有 3030 秒,绝不允许拨错电话。

遗憾的是,越是在这种危急时刻,越容易犯错。请你帮助龙先生计算:当他拨打一位朋友的电话号码时,恰好接通了另外一个人的电话的概率是多少。这个人不一定是他的朋友,也可以是索马里城中的任何人。

已知索马里是一座不超过 10510^5 人的小城,电话号码均为 66 位。

当龙先生拨打一位朋友的电话时,可能出现以下 33 种情况:

  1. 恰好接通这位朋友的电话;
  2. 接通了其他人的电话;
  3. 拨打了空号。

现在要求计算第 22 种情况发生的概率。

输入格式

第 11 行包含一个整数 nn,表示索马里城中的人数,满足 n≤105n\le 10^5。

接下来的 nn 行,每行包含一个人的 66 位电话号码。

接下来的 1010 行描述一个 10×1010\times 10 的错按概率表。表中第 ii 行第 jj 列的数值表示按下数字 i−1i-1 时,实际按成数字 j−1j-1 的概率。所有概率均用 0∼100\sim 10 的整数表示,实际概率需要除以 1010。

下一行包含一个整数 mm,表示龙先生的朋友人数,满足 m≤nm\le n。

接下来的 mm 行,每行包含一个朋友的电话号码。

输出格式

对于每位朋友,按照输入顺序输出拨打其电话号码时接通其他人的电话的概率乘以 10610^6 后得到的整数结果,每行输出一个整数。

样例输入

5
267535
229127
693606
861879
902375
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
5
267535
229127
693606
861879
902375

样例输出

4
4
4
4
4

样例解释

每次拨号时,可能恰好接通目标朋友、接通其他人,或者拨打空号。样例中输出的 44 表示接通其他人的电话的概率乘以 10610^6 后得到的结果。

数据范围

  • 索马里城中的人数为 nn,满足 n≤105n\le 10^5;
  • 每个人的电话号码均为 66 位;
  • 错按概率表为 10×1010\times 10 的矩阵;
  • 概率表中的每个数均为 0∼100\sim 10 的整数,实际概率为该数除以 1010;
  • 朋友人数为 mm,满足 m≤nm\le n。

来源与许可

本题题面与测试数据整理自 BZOJ 1550。

样例 1

输入

5
267535
229127
693606
861879
902375
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
5
267535
229127
693606
861879
902375

输出

4
4
4
4
4