题目描述传说很遥远的藏宝楼顶层藏着诱人的宝藏。小明历尽千辛万苦终于找到传说中的这个藏宝楼藏宝楼的门口竖着一个木板上面写有几个大字寻宝说明书。说明书的内容如下藏宝楼共有 N1 层最上面一层是顶层顶层有一个房间里面藏着宝藏。除了顶层外藏宝楼另有 N 层每层 M 个房间这 M 个房间围成一圈并按逆时针方向依次编号为 0,⋯,M−1。其中一些房间有通往上一层的楼梯每层楼的楼梯设计可能不同。每个房间里有一个指示牌指示牌上有一个数字 x表示从这个房间开始按逆时针方向选择第 x 个有楼梯的房间假定该房间的编号为 k从该房间上楼上楼后到达上一层的 k 号房间。比如当前房间的指示牌上写着 2则按逆时针方向开始尝试找到第 2 个有楼梯的房间从该房间上楼。如果当前房间本身就有楼梯通向上层该房间作为第一个有楼梯的房间。寻宝说明书的最后用红色大号字体写着“寻宝须知帮助你找到每层上楼房间的指示牌上的数字即每层第一个进入的房间内指示牌上的数字总和为打开宝箱的密钥”。请帮助小明算出这个打开宝箱的密钥。输入格式第一行有两个整数 N 和 M之间用一个空格隔开。N 表示除了顶层外藏宝楼共 N 层楼M 表示除顶层外每层楼有 M 个房间。接下来 N×M 行每行两个整数之间用一个空格隔开每行描述一个房间内的情况其中第 (i−1)×Mj 行表示第 i 层 j−1 号房间的情况i1,2,⋯,Nj1,2,⋯,M。第一个整数表示该房间是否有楼梯通往上一层0 表示没有1 表示有第二个整数表示指示牌上的数字。注意从 j 号房间的楼梯爬到上一层到达的房间一定也是 j 号房间。最后一行一个整数表示小明从藏宝楼底层的几号房间进入开始寻宝注房间编号从 0 开始。输出格式一个整数表示打开宝箱的密钥这个数可能会很大请输出对 20123 取模的结果即可。输入输出样例输入 #1复制2 3 1 2 0 3 1 4 0 1 1 5 1 2 1输出 #1复制5说明/提示【数据范围】对于 50% 数据有 0N≤1000,0x≤104对于 100% 数据有 0N≤10000,0M≤100,0x≤106。NOIP 2012 普及组 第二题#includebits/stdc.h using namespace std; const int N10010,M110,MOD20123; typedef long long LL; bool st[N][M];// 标记楼梯信息 LL arr[N][M];// 指示牌上的数字 LL n,m; LL cnt[N];//统计每层楼上的楼梯数量 int main() { cinnm; LL x,y; for(int i1;in;i) { for(int j0;jm;j) { cinxy; if(x) { st[i][j]true; cnt[i]; } arr[i][j]y; } } LL ret0; LL pos; cinpos; for(int i1;in;i) { ret(retarr[i][pos])%MOD; LL steparr[i][pos]%cnt[i]; if(!step) stepcnt[i]; while(1) { if(st[i][pos]) step--; if(step0) break; pos; if(posm) pos0; } } coutretendl; return 0; }