Запишу сначала за вас условие до конца: Первая строка ввода содержит два числа 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); } }
Условие: Написать программу, которая проверяет, является ли четным введенное пользователем целое трехзначное число.
Путь решения: сохраняем в переменную введенное пользователем число, например в a получаем остаток деления на 2 и сравнимаем с 0. Если равен, то число - четное иначе не четное. P.S. Так как число a используется в программе меньше или равно 1 раз, то это число можно не сохранять, а сразу работать с ним, в месте вызова функции.
Используемые языки: Pacal, Python, JavaScript
Язык: Pascal //fpc 3.0.0 Var a:integer; Begin read(a); if (a mod 2 = 0) then write('Введенное число четное') else write('Введенное число нечетное'); End.
ИЛИ //PascalABC.NET (версия 3.2, сборка 1363) Begin print(ReadInteger() mod 2 = 0 ? 'Введенное число четное' : 'Введенное число нечетное') End. Язык: Python print('Введенное число ' + ('нечетное', 'четное')[int(input()) % 2 == 0])
Первая строка ввода содержит два числа 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);
}
}
Путь решения: сохраняем в переменную введенное пользователем число, например в a получаем остаток деления на 2 и сравнимаем с 0. Если равен, то число - четное иначе не четное.
P.S. Так как число a используется в программе меньше или равно 1 раз, то это число можно не сохранять, а сразу работать с ним, в месте вызова функции.
Используемые языки: Pacal, Python, JavaScript
Язык: Pascal
//fpc 3.0.0
Var
a:integer;
Begin
read(a);
if (a mod 2 = 0) then write('Введенное число четное')
else write('Введенное число нечетное');
End.
ИЛИ
//PascalABC.NET (версия 3.2, сборка 1363)
Begin
print(ReadInteger() mod 2 = 0 ? 'Введенное число четное' : 'Введенное число нечетное')
End.
Язык: Python
print('Введенное число ' + ('нечетное', 'четное')[int(input()) % 2 == 0])
Язык: JavaScript
alert('Введенное число ' + (Number(prompt()) % 2 === 0 ? 'четное': 'нечетное'));