Даны два числа A и B (A<B Найти сумму всех целых чисел от А до В включительно. Решить задачу используя циклическую конструкцию for. Обязательно в языке Паскаль
public class Main { public static BufferedReader READER = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws IOException { int N = Integer.parseInt(READER.readLine()); int[] array = new int[N]; for(int i = 0; i < array.length; ++i) array[i] = Integer.parseInt(READER.readLine()); System.out.println("Negative: " + Main.function(array)); } public static boolean function(int[] array) { for(int number : array) if(number >= 0) return false; return true; } }
shuxratmaxmedov
20.03.2023
ответ: 359.
Решение. Начнём с простого наблюдения.
Лемма. Если на каком-то шаге все куски одинаковой массы m, то можно путём указанных операций сделать так, чтобы все куски стали массой m/2. Доказательство. На первом шаге съедаем кусок массы m и разрезаем другой кусок массы m. Получится 8 кусков массы m и 2 куска массы m/2. Теперь 8 раз съедаем куски m/2 и распиливаем куски массы m.
Перейдём к собственно решению. Понятно, что Саша не мог съесть весь сыр. Поэтому, поскольку он съел целое число граммов сыра, он мог съесть не более, чем 360 - 1 = 359 граммов. Покажем, как он это мог сделать.
Пусть изначально головка сыра была разрезана так: 5 кусков по 512/9 г, 2 куска по 256/9 г, 1 кусок 128/9 г, 1 кусок 32/9 г, 1 кусок 8/9 г (легко проверить, что сумма всех масс равна 360).
Сначала съедим куски массой 8/9, 32/9, 128/9 и распилим три куска по 512/9 г. Останется 2 куска по 512/9 и 8 кусков по 256/9. Затем дважды съедим куски по 256/9 и разрежем оставшиеся куски по 512/9. После этого будет 10 кусков по 256/9.
Уменьшим размер каждого куска в 256 раз (воспользуемся 8 раз процессом, описанным в лемме). Тогда останутся 10 кусков массой 1/9 г. Съедаем один кусок и распиливаем любой оставшийся кусок. Несъеденная масса 9 * 1/9 = 1 г, значил, съел Саша 360 - 1 = 359 г сыра.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Даны два числа A и B (A<B Найти сумму всех целых чисел от А до В включительно. Решить задачу используя циклическую конструкцию for. Обязательно в языке Паскаль
var a, b, i, s:integer;
begin
readln(a, b);
s:=0;
for i:=a to b do s:=s+i;
write(s);
end.