С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 3

Нужно упростить либо корректно записать

05.12.2019, 12:27. Показов 2205. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести два натуральных числа А и В (1≤A,B≤1018) и вывести их сумму.
Java
1
2
3
4
5
6
Scanner scanner = new Scanner(System.in);
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            if (1 <= a && 1<=b && a <= Math.pow(10,18) && b <= Math.pow(10, 18)) {
                System.out.println(a + b);
            }
Что тут не так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2019, 12:27
Ответы с готовыми решениями:

нужно реализовать решение данных задач либо в C++, либо в Delphi
нужно реализовать решение данных задач либо в C++, либо в Delphi

Миссия простая: нужно либо накопить c кредитов, либо сокрушить врага в этом регионе
Миссия простая: нужно либо накопить c кредитов (читайте: единиц вымышленной валюты), либо сокрушить врага в этом регионе. Миссия проходная...

Не получается выставить тайминги либо настроить корректно биос для максимальных частот оперативной памяти
Имеем: Windows 8.1 pro Процессор AMD FX 8320 (3.5-4 ггц) Материнка MSI 970 gaming Оперативка AMD radeon R9 gaming series (8 гб) ...

19
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
05.12.2019, 12:42
Лучший ответ Сообщение было отмечено AdiLhan1 как решение

Решение

1e18 не входит в диапазон int. Поэтому нужно использовать double.
Java
1
2
3
4
5
6
7
8
public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    double a = scanner.nextDouble();
    double b = scanner.nextDouble();
    if (1 <= a && 1 <= b && a <= 1e18 && b <= 1e18) {
        System.out.println(a + b);
    }
}
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
05.12.2019, 18:19
Цитата Сообщение от alicesmagic Посмотреть сообщение
Поэтому нужно использовать double
Цитата Сообщение от AdiLhan1 Посмотреть сообщение
два натуральных числа
10^18 - прямая отсылка к long

AdiLhan1, тебе не нужно проверять, попали ли введенные числа в диапазон, тебе нужно написать программу которая сможет работать с достаточно большими числами. Если тип данных будет int, как у тебя, то заведомо не сможет, вне зависимости от того, проверяешь ты их в блоке if или не проверяешь. Надо так:
Java
1
2
3
4
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
System.out.println(a + b);
2
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
05.12.2019, 20:45
Цитата Сообщение от Sindbad_M Посмотреть сообщение
10^18 - прямая отсылка к long
Потеряла форму. Затупила))

Добавлено через 6 минут
Цитата Сообщение от Sindbad_M Посмотреть сообщение
тебе не нужно проверять, попали ли введенные числа в диапазон, тебе нужно написать программу которая сможет работать с достаточно большими числами
А вот это уже домыслы. В условии сказано "Ввести два натуральных числа А и В (1≤A,B≤1018)", следовательно, число, например, 3 000 000 000 000 000 000 хоть и входит в диапазон лонга, но не входит в диапазон, допустимый условием задачи. Так что if убирать не стоит.
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
05.12.2019, 21:07
alicesmagic, есть традиция формулирования условий задач, начиная со школьной информатики и заканчивая олимпиадами по программированию. Если сказано "дано такое-то число" или "ввести такое-то число", то в программе можно предполагать что ввод будет корректным и соответствовать условию. Иначе не напроверяешься.
Например, число 10.5 входит в диапазон задачи, но не является натуральным. Тоже проверять будем? Во что тогда превратиться простенькая задачка про сложение двух чисел введенных с клавиатуры?
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 09:02
Sindbad_M, этак любую задачу можно подвести под ту форму, которая вам более приятна и решать ее так как вам нравится. Человек, сформулировавший задачу из первого поста, вполне резонно может отметить ваше решение как неверное. Мало ли что вы там себе напридумывали и напредполагали. Число 3е18 не соответствует условию ввода, в поставленной им задаче. И все ваши возражения будут просто бессмысленны. Ведь вы решаете его задачу, а не свою собственную.
Предполагать нужно только то, что формулировка задачи (как и наука Математика) точная и не допускающая отсебятины.
А ненатуральное число 10.5 (вы же это понимаете) вызовет исключение. Но это уже будет на совести вводившего.
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
06.12.2019, 09:13
Цитата Сообщение от alicesmagic Посмотреть сообщение
не допускающая отсебятины.
c возвращением)). не хватало твоей прямой гражданской позиции! полагаю Sindbad_M, думает так идеально, из-за своей молодости и неопытности.
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 11:42
Aviz__, привет)
Вот я и думаю, давать ссылку на тот холивар, или уж ладно)))

Добавлено через 1 час 26 минут
Что любопытно, Sindbad_M расширил заданный в условии диапазон, не много и не мало, а на 822%...
Java
1
System.out.printf("%.0f percents", (Long.MAX_VALUE - 1e18) * 100 / 1e18);
Такова цена традиционных вольностей формулировок
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
06.12.2019, 11:48
alicesmagic, ну, тут же не образовательный форум, а развлекательный)). каждый волен развлекаться по своему...
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 11:51
Aviz__, твои бы мудрые слова да модераторам в высокочтимые уши А я то обеими руками за развлечения))
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
06.12.2019, 11:53
alicesmagic, ну, так мы и развлекаемся в кодировании))
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 11:55
Aviz__, так и я вместе с вами)))
Ладно, давай заканчивать... сам понимаешь)
1
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
06.12.2019, 12:31
Цитата Сообщение от alicesmagic Посмотреть сообщение
Sindbad_M расширил заданный в условии диапазон
ТС выводы, конечно, сам должен делать, что из сказанного в ветке принимать, что нет.
Но, еще раз: в школьных/ВУЗовских задачах на программирование условия вида "ввести натуральное число не превышающее 10^18" интерпретируются именно как "написать программу, которая корректно примет число соответствующе условию задачи". В данном случае тип int не позволит принять такое число. Поэтому нужно использовать long или BigInteger, а не городить частичные проверки входных данных.
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 12:58
Sindbad_M, ну вот представьте, что вы у меня на собеседовании. Я вам говорю: "Вы не верно решили поставленную мной задачу. Число 3е18, которое вы просуммировали с другим числом не входит в заданный мной диапазон". А вы мне в ответ: "есть традиция формулирования условий задач, начиная со школьной информатики и заканчивая олимпиадами по программированию...".
Улавливаете суть?
Я поставила вам задачу с четким условием. Мне дела нет до ваших вузовских и школьных традиций. Ваши аргументы про традиции не более чем детский лепет. Никакие традиции не должны позволять расширять допустимый диапазон значений в 9! раз. И если они это позволяют, то может быть стоит задуматься о дальнейшем следовании таким традициям?
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
06.12.2019, 14:43

Не по теме:

alicesmagic, лучше представьте, проверяете у ребенка в шестом (седьмом, восьмом, не важно) классе домашку по математике, дошли до задачи "решить уравнение X^2 + 3 = 1", видите ответ "корней нет". И сразу, чё за фигня? Корни всегда есть и их ровно два! Смотри как надо <записываете нахождение комплексных корней>, а еще лучше так <записываете корни в тригонометрической форме>. А аргументы училки, про отсутствие корней - не более чем детский лепет. Задача поставлена с четким условием, <трогательная история про собеседование>


Вернемся к задаче ТС. В упрощенной (пусть пока будет все-таки упрощенной, хоть вы упрощения и не любите) форме условия задачи, требуется ввести два числа, которые удовлетворяют критериям:
1. являются натуральными числами
2. лежат в диапазоне от 1 до 10^18
Вы настаиваете на явной проверке второго условия, а избыточность проверки первого аргументируете
Цитата Сообщение от alicesmagic Посмотреть сообщение
А ненатуральное число 10.5 (вы же это понимаете) вызовет исключение. Но это уже будет на совести вводившего.
Совесть вводившего легко применима и ко второму условию, почему же не применяете?
А исключение это как раз совесть программирующего. И программу можно написать так, чтобы 10.5 к выбрасыванию исключения не приводило. И исключение можно обработать. Какая связь исключения и выборочной проверки условий задачи?
1
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 15:01
Sindbad_M, в случае с ребенком, я вижу, что передо мной шести(семи-, восьми-)классник. И я представляю себе его программу обучения и уровень его знаний на данный момент.

Вы же сделали свои выводы о традициях, лишь увидев знакомую символьную комбинацию 10^18. И на их основе предложили упрощенное и неверное решение задачи.

Теперь смотрите. Если в моем варианте человек введет число выходящее за пределы указанного диапазона, он в итоге не получит никакого результата, а если ввод будет содержать любые символы, кроме цифр, то получит исключение. В обоих случаях результата не будет, так как он не соблюдал условия ввода, указанные в задаче.

В вашем же случае если он введет число 3е18 он получит неверное решение. Почти 90% вводимых чисел из диапазона long будут приводить к неверному решению задачи.

Будем и дальше копья ломать?
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
06.12.2019, 16:18
а когда ребенок на форуме ту же задачу разместит, вы сделаете вид что не можете распознать обычную школьную задачу и будете решать в комплексных числах? Только хардкор!

Цитата Сообщение от alicesmagic Посмотреть сообщение
В обоих случаях результата не будет, так как он не соблюдал условия ввода
Это все ваши домыслы. Условие задачи однозначно говорит в повелительном наклонении "ввести" и "вывести". Точное исполнение условия не предполагает ни завершения без результата, ни завершения по ошибке. Программа должна дождаться корректного ввода и вывести сумму.
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
06.12.2019, 17:35
Предполагаю, что вскоре должен последовать справедливый гнев модератора.
Так что, если есть желание продолжать, то, пожалуйста, здесь.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.12.2019, 19:17
Так-так-так
2
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 3
07.12.2019, 09:05  [ТС]
Помогите пж
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2019, 09:05
Помогаю со студенческими работами здесь

Корректно записать математическое выражение
Картинка и мои моя одна из тщетных попыток: (log(x)/log(2.0))(3*cos(x)+4)-1; Как правильно записать то что на картинке? Формулы надо...

При изменении каких либо данных программа либо вылетает, либо просто не изменяет данные
Добрый вечер. Только недавно начал заниматься С++. И вот возникли проблемы. При изменении каких либо данных. Программа либо вылетает(Qt),...

Ввести с клави атуры знак арифметической операции(либо+,либо-,либо/)и два числа
Ввести с клавиатуры знак арифметической операции(либо+,либо-,либо/)и два числа.Вывести на экран результат.При вводе знака операции #-выход...

Во время загрузки логотипа виндовс изображение либо переодически пропадает, либо тормозит, либо нет сигнала
Здравствуйте!Помогите решить проблему.Вчера видеокарта работала исправно,а сегодня жена пришла,включила и во время загрузки логотипа...

Программа, которая сортирует список либо по среднему баллу, либо по алфавиту, либо по оценкам по заданному предмету
Список студенческой группы указан в виде файла записей. Каждая строка записи содержит фамилию студента и три экзаменационные оценки,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru