Задание »

Taisnstūris

ID: taisnst
Grūtība: 1/5
Laika limits: 1


Uzdevums

Vilibalds nolēma sagriezt taisnstūrveida rūtiņu lapu, kuras izmēri bija n×m rūtiņas, kvadrātos. Vispirms viņš no taisnstūra ar taisnu griezienu nogrieza lielāko iespējamo kvadrātu. Pēc tam kvadrātu nolika malā un atkārtoja iepriekšējo darbību ar atlikušo taisnstūri. Tā (visu laiku nogriežot lielāko iespējamo kvadrātu) Vilibalds turpināja griezt, līdz kamēr arī atlikumā ieguva kvadrātu.

Uzrakstiet programmu, kas nolasa no faila taisnst.in naturālu skaitļu n un m vērtības (n < 10000, m < 10000) un nosaka, cik kvadrātus Vilibalds ieguva, sagriežot taisnstūri iepriekš aprakstītajā veidā.

Ievaddati

Ievaddatu fails taisnst.in satur 2 skaitļus: n < 10000 un m < 10000, atdalītus ar tukšumsimbolu.

Izvaddati

Izvaddatu failā taisnst.out jāizvada iegūto kvadrātu skaits.

Piemērs

taisnst.in taisnst.out Piezīme
3 7
5
Taisnstūris tika sagriezts kvadrātos ar malu garumiem 3,3,1,1,1
taisnst.in taisnst.out
9999 9999
1

© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var x,y,z:integer;
f:text;
begin
Assign(f,'taisnst.in');
Reset(f);
readln(f,x,y);
Close(f);
z:=0;
if x>y then begin
x:=x+y;
y:=x-y;
x:=x-y;
end;
if x=y then z:=0
else begin
while y>=1 do
begin
if x>y then begin
x:=x+y;
y:=x-y;
x:=x-y;
end;
y:=y-x;
z:=z+1;
end;
end;
Assign(f,'taisnst.out');
Rewrite(f);
write(f,z);
Close(f);
end.

Результат: 5/5

Нашел решения на задачи по pascal, которые я делал в 2008 году. Так что теперь выложу много всего. За код не ругайте, т.к. было давно и неправда. =)))

Добавить комментарий