Задача: Завод по производству колы изготавливает ее не только для магазинов, но и для всемирно известной сети ресторанов быстрого питания. Ежедневно завод отгружает один и тот же объем колы в литрах. Служба доставки сети ресторанов обычно использует для транспортировки колы емкости объемом или только 50 литров, или только 70 литров. Если доставка осуществляется с помощью емкостей в 50 литров, то для перевозки имеющегося объема колы необходимо A емкостей. А если с помощью емкостей в 70 литров, то необходимо B емкостей. При этом в каждом из случаев одна из емкостей может быть заполнена не полностью. <span>Недавно сеть ресторанов решила утвердить новый объем емкостей для доставки колы — 60 литров. Сколько емкостей теперь может понадобиться для доставки того же самого объема колы?</span>
Запишу сначала за вас условие до конца: Первая строка ввода содержит два числа A и B, разделенных пробелом (1 ≤ A, B ≤ 10 000 000).Выведите все возможные значения для количества емкостей по 60 литров, которые окажутся заполненными (в том числе одна возможно частично), в порядке возрастания или число −1, если значения A и B противоречат друг другу, то есть они были записаны неверно.
Теперь к вопросам по форме. Во-первых, если в условии указаны ограничения на входные данные, им можно верить, проверять, что 1 <= A, B <= 10000000 не обязательно. Во-вторых, научитесь пользоваться &&, ||, это позволит не дублировать код. 4 раза написанное else Console.WriteLine("-1"); не очень помогает читать.
А уже теперь по сути. Ваше условие противоречивости условия |50A - 70B| < 50 нехорошее. Если общий объем колы, например, 141, то A = 3, B = 3, но при этом |50A - 70B| = 60, что больше 50.
Смотрю дальше. если 50A < 70B, то если 50A не делится на 60, то ответ [(50A - 49)/60] + 1 или [50A/60] + 1 (если это одно и то же, не важно). Это тоже как минимум не очевидно: представим, что [(70B-69)/60] + 1 оказался больше, чем [(50A-49)/60] + 1. Тогда ответ точно неверен.
Какие были бы мои рассуждения: Поищем, какое могло бы быть общее количество колы. Пусть её N, тогда 50(A - 1) < N <= 50A 70(A - 1) < N <= 70B Тогда max(50A - 50, 70B - 70) < N <= min(50A, 70B). Если max(50A - 50, 70B - 70) >= min(50A, 70B), то решений нет, надо выводить -1. Иначе думаем дальше. Строгое неравенство иметь что-то не хочется, сделаем из него нестрогое. Если добавлю к левой части 1, то количество 60-литровых ёмкостей явно не поменяется, зато неравенство станет нестрогим. Пусть так и будет, раз ответ не меняется. Только в проверке равенство поменяю на строгое. max(50A - 50, 70B - 70) + 1 <= N <= min(50A, 70B) Теперь просто считаем число ёмкостей слева, справа, и выводим все числа от первого до второго.
Поняв всё это, просто превращаем слова в программу. using System; class CocaCola { public static void Main (string[] args) { int A = int.Parse(Console.ReadLine()), B = int.Parse(Console.ReadLine()); int lowerLimit = Math.Max(50 * A - 50, 70 * B - 70) + 1; int upperLimit = Math.Min(50 * A, 70 * B); if (lowerLimit > upperLimit) { Console.Write(-1); return; } for (int i = (int)Math.Ceiling(lowerLimit / 60.0); i <= Math.Ceiling(upperLimit / 60.0); i++) Console.Write("{0} ", i); } }
Const Eps = 0.01; A = -100; B = 100; N = 10; Var i : Byte; m : array[1..N] of Real; Flag: Boolean; Begin Flag:=True; For i:=1 to N do Begin Repeat Write('Введите число № ',i,' : '); Readln(m[i]); Until (m[i]>=A) and (m[i]<=B); end; Writeln; For i:=2 to N do If abs(m[i-1]-m[i])<Eps then Begin Writeln(m[i-1],' ',m[i]); Flag:=False; end; If Flag then Writeln('НЕТ'); end.
Результат: Введите число № 1 : 2.3 Введите число № 2 : 2.4 Введите число № 3 : 2.45 Введите число № 4 : 2.46 Введите число № 5 : 2.465 Введите число № 6 : 3.0 Введите число № 7 : 4.0 Введите число № 8 : 4.01 Введите число № 9 : 4.005 Введите число № 10 : 4.007
Языки низкого уровня - это машинный язык, язык Ассемблера. Машинный язык состоит из двух символов - 0 и 1 (программа строится в двоичной системе счисления). В принципе, эти языки низкого уровня сейчас если и применяются, то для создания небольших программ. Языки низкого уровня ориентированы на машину. А вот языки высоко уровня ориентированы на человека (на пользователя ПК). Это такие языки программирования: Бейсик, Паскаль, Турбо Паскаль, С++ и другие. Чем более понятен язык человеку, тем выше его уровень.