La Red de Conocimientos Pedagógicos - Currículum vitae - Segunda pregunta de Pascal del grupo de popularización NOIP2012

Segunda pregunta de Pascal del grupo de popularización NOIP2012

tesoro del programa;

var a:array[1..10000,0..99] of longint; //etiqueta de indicación de la sala de procesamiento de matriz bidimensional, a[i, j] representa el número de instrucción en la j-ésima habitación en el i-ésimo piso.

lt: array[1..10000, 0..99]

of 0..1; //Determina si hay escaleras en la habitación actual.

tn: entero;

i, j, temp1, temp2, n, m, inicio: longint; /p>

procedure sta; // Maneja la situación cuando el subíndice del anillo de Joseph cruza el límite.

comenzar

inc(inicio);

si (iniciogt; m-1) entonces

inicio:=0;

p>

fin;

comenzar

assign(input,'treasure.in');

reset(input);

asignar(salida,'tesoro.out');

reescribir(salida);

readln(n, m);

para i:= 1 a n hacer

para j:=0 a m-1 hacer

comenzar

temp1:=0;

temp2: =0;

readln(temp1, temp2);

lt[i,j]:=temp1;

a[i, j]:=temp2 ;

end;

readln(start);

ans:=0; //Inicialización del contador.

tn:=1; //El número de capa actual se inicializa a 1, comenzando desde la capa 1

repetir

x:=0;

si

a[tn, start]gt;=20123 entonces

ans:=ans (a[tn, start]

mod 20123 )

else

ans: =ans a[tn, start]; //Si es mayor o igual a 20123, tome primero el módulo de 20123.

if lt[tn, start]=1 then //Si la habitación actual ya tiene escaleras, entonces el número de veces es x-1, el inicio 1 comienza desde la siguiente habitación. Esto debe escribirse como while lt[tn, start[=1

do para procesar un montón de unos consecutivos en la habitación después del inicio. .

comenzar

a[tn, inicio]:=a[tn, inicio]-1

sta

fin;

x:=a[tn, start];

if xlt; gt; 0 then // Si los tiempos restantes no son 0, realiza un ciclo de Joseph.

mientras xlt;gt;0

hacer

comenzar

si

lt[tn, iniciar] =1 entonces

comenzar

x:=x-1;

if

xlt 0 entonces //Cuando el restante Cuando el número de veces no sea igual a 0, comience desde la siguiente habitación.

Si es igual a 0, avance según los requisitos de la pregunta, no establezca el inicio en 1.

sta;

end

else sta;

end;

inc(tn);

inc(tn);

p>

hasta tngt;n;

si ansgt;=20123 entonces

ans:= ans mod 20123;// Si el último dato aún es mayor que 20123, hazlo de nuevo. Toma el molde. (Por ejemplo, cuando n = 2, los dos valores de habitación 20122 y 20121 no son mayores o iguales que 20123, pero la suma es mayor que 20123).

write(ans);

cerrar(entrada);

cerrar(salida);

fin.