2 Напиши программу на следующие задачи А) После увеличения цены альбома на 25% он стал стоить а рублей. Сколько стоил альбом первоначально.
Б) В книге В страниц. В первый день Саша прочитал 20% книг, а во второй - половину остатка. Сколько страниц прочитал Саша за эти два дня?
В) Цена телевизора с А рублей снизилась до В рублей. На сколько процентов снизилась цена телевизора?
Не знаю, как с алгоритмом, а находить остатки деления на 3, 4, 8 можно по признакам делимости.
1) n mod 3
Число делится на 3, если сумма его цифр кратна трем.
Пусть дано число 373412. Его сумма цифр 3+7+3+4+1+2 = 20. 20 на 3 не делится, но делится 18 (ближайшее меньшее). Разница 2 - это и есть нужный ответ. 373412 мод 3 = 2
2) n mod 4
Число делится на 4, если две его последние цифры нули или делятся на 4. Пусть дано число 37535627345. Его две последние цифры 45. 45 на 4 не делится, но делится 44. Разница 1. Это и есть ответ. 37535627345 mod 4 = 1
3) n mod 8
Самый сложный вариант. 8 = 4х2. Как и для случая получения остатка по mod 4 получаем остаток по двум последним цифрам. Далее, если третья справа цифра нечетная, добавляем к результату 4.
45684373 mod 8. Для числа 73 находим остаток от деления на 4. На 4 делится 72, так что остаток тут 1. Перед 73 стоит нечетная цифра 3, поэтому добавляем 4, итого 1+4=5. 45684373 mod 8 = 5.
878746345242 mod 8. 42 mod 4 =2 (уже не буду подробно писать). Перед 42 стоит 2 - четное число. Результат не меняем. 878746345242 mod 8 = 2.
Так что ничего волшебного.
program HelloWorld;
var a: array of integer;
var N, min, max, i, variable:integer;
begin
min := 32767;
max := 0;
readln(N);
for i := 0 to N do begin
readln(variable);
if (variable > 0) and (variable mod 2 = 0) and (variable > max) then
max := variable;
if (variable > 0) and (variable mod 2 = 0) and (variable < min) then
min := variable;
end;
if (max <> 0) and (min <> 32767) then
writeln(min, ' ', max)
else
writeln(-1);
end.