Задача A. - Центр образования "Эврика"

advertisement
«Первые шаги» 2014
Командный турнир
по программированию
КГБОУ «Центр образования «Эврика»
Задача A. Красная шапочка
Идея решения.
Смоделируем битву!
Задача A. Красная шапочка
Задача на сравнение двух чисел.
var
n: longint;
begin
readln(n);
if (n div 2) < n - 10 then writeln(n - 10)
else writeln(n div 2);
end.
Задача A. Красная шапочка
Решение на Python.
n = int(input())
if n - 10 > n // 2:
print(n - 10)
else:
print(n // 2)
Задача A. Красная шапочка
Решение на Python.
n = int(input())
print(n - 10 if n - 10 > n // 2 else n // 2)
Задача A. Красная шапочка
Решение на Python.
Упростим выражение:
x - 10 >
n = int(input())
print(n - 10 if n > 20 else n // 2)
x
2
x > 20
Задача A. Красная шапочка
Решение на Python.
n = int(input())
print(max(n - 10, n // 2))
Задача B. Змей Горыныч
Идея решения.
Смоделируем битву!
Задача B. Змей Горыныч
При каких условиях бой
никогда не закончится?
Если число отрубаемых голов меньше (или равно)
числу регенерируемых голов
и
все головы нельзя срубить одним ударом.
Задача B. Змей Горыныч
var
n, m, k, ans: longint;
begin
readln(n, m, k);
if (n <= k) and (n < m) then writeln ('NO') else
begin
ans := 1;
while m > n do
begin
inc(ans);
m := m - n + k;
end;
writeln(ans);
end;
end.
Задача B. Змей Горыныч
Идея решения.
Вычислим, через какое число ударов нужно,
чтобы головы закончились.
if n >= m then ans := 1
else ans := (m - k - 1) div (n - k) + 1;
writeln(ans);
Задача B. Змей Горыныч
var
n, m, k, ans: longint;
begin
readln(n, m, k);
if (m > n) and (k >= n) then writeln('NO')
else
if n >= m then writeln('1')
else writeln( (m - k - 1) div (n - k) + 1);
end.
Задача B. Змей Горыныч
Решение на Python.
n, m, k = map(int, input().split())
if (m > n) and (k >= n):
print('NO')
else:
print(1 if n >= m else (m - k - 1) div (n - k) + 1)
Задача C. Пятимильные сапоги
Идея решения.
Найдем расстояние
между точками по
теореме Пифагора.
Теперь задача из «двумерной» стала «одномерной».
Задача C. Пятимильные сапоги
5
B
А
C
Задача C. Пятимильные сапоги
C
А
B
Задача C. Пятимильные сапоги
var
x1, x2, y1, y2, res: longint;
r: real;
begin
readln(x1, y1);
readln(x2, y2);
r := sqrt(sqr(x2 - x1) + sqr(y2 - y1));
if r >= 5 then
begin
res := trunc(r);
res := res div 5;
if (trunc(r) mod 5 > 0) or (frac(r) > 0) then inc(res);
end else res := 2;
writeln(res);
end.
Задача C. Пятимильные сапоги
var
x1, x2, y1, y2: longint;
r:real;
begin
readln(x1,y1);
readln(x2,y2);
r:=sqrt(sqr(x2 - x1) + sqr(y2 - y1)) / 5;
if r < 1 then r := 2;
function Ceil(x: real): integer;
Возвращает наименьшее
writeln(ceil(r));
целое, большее или равное x.
Только в Pascal ABC.Net и
end.
Borland Delphi !!!
Задача C. Пятимильные сапоги
Решение на Python.
import math
x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())
r = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 / 5
if r < 1:
r=2
print(math.ceil(r))
Задача D. Гребешок Бабы-Яги
Идея решения.
Если n = kx, то ответ - х (при наименьшем k),
иначе ответ - 1
Найдем x перебором.
Будем перебирать k от 1 до n .
Задача D. Гребешок Бабы-Яги
var
m, n, max, i, k: longint;
begin
readln(n);
ans := 1;
for k := 2 to round(sqrt(n)) do
begin
m := n;
x := 0;
while m mod k = 0 do
begin
m := m div k;
inc(x);
end;
if (x > ans) and (m = 1) then ans := x;
end;
writeln(ans);
end.
Задача D. Гребешок Бабы-Яги
Решение на Python.
n = int(input())
res = 1
for i in range(2, int(n ** 0.5) + 1):
count = 1
st = 0
while count < n:
count *= i
st += 1
if count == n:
res = st
break
print(res).
Задача E. Иван-царевич и змеёныши
Идея решения.
Переведем n в двоичную систему счисления.
Ответ равен количеству единиц в этом представлении.
Например, n = 27.
27 10 = 11011 2 = 16 + 8 + 2 + 1 =
= 24 + 23 + 21 + 20.
20 - убивается сразу
21 - убивается после одного ранения
23 - убивается после трех ранений
24 - убивается после четырех ранений
Задача E. Иван-царевич и змеёныши
var
n, res: longint;
begin
readln(n);
while n > 0 do
begin
if odd(n) then inc(res);
n:=n div 2;
end;
writeln(res);
end.
Задача E. Иван-царевич и змеёныши
Решение на Python.
print(bin(int(input())).count('1'))
Спасибо за внимание!
Download