Đề thi Biến đổi trên lưới số

doc2 trang | Chia sẻ: haohao | Lượt xem: 1195 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đề thi Biến đổi trên lưới số, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 72/2001 - Biến đổi trên lưới số
const Inp ='bai72.inp';
 Out ='bai72.out' ; 
 maxn=100;
Var dem, n, i, j, d:integer; f:text;
 a:array[0..maxn+1,0..maxn+1] of Boolean;
Procedure Init;
Var t:integer;
Begin
 Fillchar(a, Sizeof(a), true);
 Assign(f, inp); reset(f);
 dem:=0;
 Readln(f, n);
 for i:= 1 to n do
 for j:=1 to n do
 begin
 read(f, t);
 If t=1 then a[i,j]:=true else begin a[i,j]:=false;inc(dem); end;
 If j=n then readln(f);
 end;
Close(f);
End;
Procedure Solve1;
Begin
 for i:=1 to n do
 for j:=1 to n do
 begin
 If not a[i,j] then 
 begin
 a[i,j]:= not (a[i,j-1] xor a[i,j+1] xor a[i-1,j] xor a[i+1,j]);
 If a[i,j] then begin dec(dem);writeln(f,i,' ',j) end 
 end; 
 end;
End;
Procedure Solve2;
Begin
 for i:=1 to n do
 for j:=1 to n do
 If not a[i,j] then
 begin
 If i >1 then 
 begin 
 a[i-1,j]:=false; 
 inc(dem); 
 writeln(f, i-1, ' ', j); 
 end
 else 
 If i <n then 
 begin 
 a[i+1,j]:=false; 
 inc(dem); 
 writeln(f, i+1, ' ', j); 
 end
 else 
 If j >1 then 
 begin 
 a[i,j-1]:=false; 
 inc(dem); 
 writeln(f, i, ' ', j-1); 
 end
 else 
 begin a[i,j+1]:=false; inc(dem); writeln(f, i, ' ', j+1) end;
 exit;
 end;
End;
BEGIN
 Init;
 Assign(f,out); rewrite(f);
 While dem >0 do 
 begin 
 writeln(dem); d:=dem; solve1;
 If (d=dem) and (dem >0) then solve2; 
 end; Close(f);
END.
(Lời giải của bạn Nguyễn Chí Thức - khối PTCTT - ĐHSP - Hà Nội)
Bài 73/2001 - Bài toán chuỗi số
(Dành cho học sinh Tiểu họcvà THCS)
Hai số cuối là 59 và 65.
Giải thích: Chuỗi số được tạo ra từ việc cộng các số nguyên tố (ở hàng trên) với các số không phải là nguyên tố (hàng dưới), cụ thể như sau:

File đính kèm:

  • docDe thi Toan Tin hoc trong nha truong Bai 7273.doc