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 году. Так что теперь выложу много всего. За код не ругайте, т.к. было давно и неправда. =)))