提交时间:2026-06-12 14:58:55
运行 ID: 91044
#include<iostream> #include<fstream> #include<cstdio> #include<algorithm> #include<cmath> #include<string> using namespace std; int pd[10002][202],a[10002][202]; int main() { //freopen("treasure.in","r",stdin); //freopen("treasure.out","w",stdout); int n,m,x,i,j,ans=0,l=0; scanf("%d%d",&n,&m);//以下的读入不说了 for(i=1;i<=n;i++) { l=0; for(j=0;j<m;j++) { scanf("%d%d",&pd[i][j],&a[i][j]); if(pd[i][j]==1) l++;//记录该层楼有楼梯的门数 } pd[i][m]=l; } scanf("%d",&x); i=1; while(i<=n) { ans+=a[i][x]; ans%=20123;//根据规律,边加边模,值不变,不用long long int k=0; for(j=x;;j++) { if(j==m) j=0; if(pd[i][j]==1) k++; if(k==(a[i][x]-1)%pd[i][m]+1) break;//最关键的停止条件,循环找对,取模,都靠它。 } x=j; i++; } printf("%d",ans);//小小的输出优化~ return 0; }