2003 variant B
- Daný program po načítaní čísla A vypíše
hodnotu P:
var
i,j,A,P:integer;
begin
read(A);
P:=0;
for i:=A to A+100 do begin
j:=i;
while (j>0) and (j mod 7 = 0) do begin
P:=P+1;
j:=j div 10;
end;
end;
writeln(P);
end;
- Zistite, čo sa vypíše, ak zadáme A=0.
- Zistite, čo sa vypíše, ak zadáme A=700.
- Nájdite také číslo A >= 9000, ktoré
je násobkom 100 a pre ktoré program vypíše číslo
17.
Pozn.
- x mod y znamená zvyšok po delení čísla
x číslom y, napr. 127
mod 10 = 7
- x div y znamená celočíselné delenie
čísla x číslom y, napr. 127
div 10 = 12.
- V dvojrozmernom poli čísel M[1..31,1..100] sú
uložené informácie o nejakých meraniach uskutočnených
v priebehu niekoľkých dní:
- každý riadok poľa obsahuje merania jedného dňa;
- v každom riadku môžu byť kladné, nulové aj záporné
hodnoty;
- len kladné hodnoty reprezentujú merania, záporné
a nulové čísla sú pre nás nedôležité
hodnoty.
Daná časť programu zisťuje, v ktorom dni mali merania najväčší
rozptyl, t.j. najväčší rozdiel maximálneho a minimálneho
merania (samozrejme, že sa nepočítajú nulové a záporné
čísla).
V programe však niekto vynechal niektoré aritmetické
a logické výrazy. Opravte program!
naj:=0; d:=0;
for i:=1 to 31 do begin
j:=1;
while ______________________________ do j:=j+1;
if j <= 100 then begin
min:=M[i,j]; max:=M[i,j];
for j:=j to 100 do
if __________________ then max:=_______________
else if _____________________ then min:=_____________________;
if _________________________ then begin
naj:=______________________;
d:=i;
end;
end;
end;
writeln('deň najväčšieho rozptylu meraní = ', d);
- Máme danú množinu znakových reťazcov,
ktoré sú zložené z písmen A a B
a všetky sú ukončené nejakou cifrou 1, 2 alebo
3. Takýmto reťazcom budeme hovoriť slová. Slová
v tejto množine vznikli podľa špeciálnych pravidiel:
x = Ay | Bz | 1
y = Az | Bx | 2
z
= Ax | By | 3
Aby sme vytvorili nejaké nové slovo do tejto množiny, vždy
zoberieme štartové písmeno x, nájdeme zodpovedajúce
pravidlo (prvý riadok pravidiel) a vyberieme nejakú z možností
(možnosti sú oddelené znakom "|" ) – písmeno
x nahradíme touto možnosťou. Ak výsledok obsahuje jedno
z písmen x, y alebo z, pokračujeme
v nahrádzaní podľa príslušného pravidla. Celý
proces vytvárania nového slova zrejme končí, keď písmeno
nahradíme cifrou. Postup nahrádzania budeme značiť šípkou,
napr. takto
x => Ay => ABx => ABBz
=> ABB3 ... t.j. vznikla postupnosť písmen A
a B a vždy končí nejakou cifrou od 1 do 3.
- Zistite, akou cifrou končia slová AABAABABBABBABBABB
a ABBBBAABBBAAABBAAAAB.
- Zistite, koľko existuje rôznych slov dĺžky 7, ktoré
sú zložené zo 6 znakov A a B a končia znakom
2.
- Deti priniesli do školy N balíkov papiera do
zberu. Učiteľka starostlivo zapísala ich váhy do tabuľky -
do celočíselného poľa baliky. Lenže podľa školských
pravidiel súťaže v zbere sa môže započítať maximálne
polovica balíkov papiera. Napíšte program, ktorý z
celkovej množiny všetkých balíkov vyberie čo najlepšiu podmnožinu
tak, aby trieda v súťaži získala čo najviac kilogramov. Program
v pôvodnom poli balíkov nahradí 0 tie balíky,
ktoré sa nebudú odovzdávať.
Môžete použiť
ľubovoľný programovací jazyk, ktorý ste používali
na strednej škole. Predpokladajte, že N-prvkové celočíselné
pole baliky je už na začiatku programu prečítané a
tiež, že konštanta N je párna.
© AB