Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
 Аватар для ELchemist
2 / 2 / 0
Регистрация: 14.03.2018
Сообщений: 51

Вывести либо одно число c – длину стороны квадрата, либо 0, если квадрат не существует...

06.12.2018, 15:02. Показов 8201. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задача:
Кликните здесь для просмотра всего текста

Поля
(Время: 1 сек. Память: 16 Мб Сложность: 16%)

Геннадий учится в сельской школе и мечтает стать агрономом. На уроке геометрии Геннадий познакомился с новой фигурой – прямоугольником. Освоив вычисление площади прямоугольника, Гена подумал о том, что квадратные поля гораздо удобнее, нежели прямоугольные. Поразмыслив еще немного, Гена столкнулся с интересной задачей: существует ли такое квадратное поле, у которого площадь в точности равна площади заданного поля прямоугольной формы, чтобы при этом длины сторон обеих полей были бы целыми числами?

Входные данные

Входной файл INPUT.TXT содержит целые числа a и b – длины сторон прямоугольника (1 < = a*b ≤ 1014).

Выходные данные

В выходной файл OUTPUT.TXT выведите либо одно целое число c – длину стороны квадрата, либо 0, если квадрата с целочисленной длиной стороны не существует.

Примеры
№INPUT.TXTOUTPUT.TXT
11 42
22 84
315 420


Оригинал - acmp: http://********/index.asp?main=task&id_task=844

Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
 
int main() {
    unsigned long long a, b;
    std::cin >> a >> b;
    double buf; // Она здесь не нужна, но без нее отказывается работать modf()
    if (modf(sqrt(a*b), &buf) == 0)
        std::cout << sqrt(a*b);
    else std::cout << 0;
}
Проваливаю 8-ой тест - "Wrong Answer". Я не представляю, что у меня не так. Помогите
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2018, 15:02
Ответы с готовыми решениями:

Найти длину стороны квадрата, вписаного в квадрат
Дан радиус круга. Найти длину стороны квадрата, вписаного в квадрат.

Вывести ряд чисел, кратных либо 2, либо 3, либо 5
Ребят погоди решить такую задачу, а то что-то то что делаю выдаёт не то. Ряд может быть до 1500 положительных чисел. Пользователь...

Можно ли передать в функцию либо вектор, либо список, если да, то как?
Можно ли передать в функцию либо вектор, либо список, если да, то как?

24
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.12.2018, 15:25
Студворк — интернет-сервис помощи студентам
analogov net, сдаюсь и беру все свои слова обратно. Но осадочек остался...
0
 Аватар для analogov net
2533 / 1131 / 495
Регистрация: 17.11.2018
Сообщений: 2,841
13.12.2018, 15:33
Цитата Сообщение от ELchemist Посмотреть сообщение
Ваш код прошел все тесты.
Ух ты , не ожидал...
Цитата Сообщение от ELchemist Посмотреть сообщение
И по коду видно, что задача имеет сложность 16%
Это как? Может быть 1,6%? Как может одна строчка кода, по сути, один маленький цикл иметь такую сложность?

Добавлено через 6 минут
Цитата Сообщение от Байт Посмотреть сообщение
analogov net, сдаюсь и беру все свои слова обратно. Но осадочек остался...
Да не, ничё, всё нормально...
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
13.12.2018, 15:57
Я ж говорил надо корень ручками в целых числах находить. Только я предлагал находить корень за логарифм(бинарным поиском), а тут находят корень за корень При таких ограничениях можно и так.
0
1 / 1 / 0
Регистрация: 15.06.2017
Сообщений: 22
18.03.2019, 14:35
Я писал решение на Python, и у меня такой фокус не прошёл...

a,b=map(int,input().split())
m1=max(a,b)
m2=min(a,b)
s=a*b
s1=0
for i in range(m2,m1):
if i*i==s:
s1=i
print(s1)

Пробовал как и в примере analogov net перебирать от 1 до a*b... четвертый тест проваливается...

Тест Результат Время Память
1 Accepted 0,015 754 Кб
2 Accepted 0,031 742 Кб
3 Accepted 0,015 738 Кб
4 Wrong answer 0,015 746 Кб

Добавлено через 3 минуты
Цитата Сообщение от analogov net Посмотреть сообщение
Это как? Может быть 1,6%? Как может одна строчка кода, по сути, один маленький цикл иметь такую сложность?
на 1,6% там нужно ввести число, а потом его вывести... (Время: 1 сек. Память: 16 Мб Сложность: 1%)

Возможно, что Вы когда то играли в игру «Глухой телефон», либо слышали о ней. В этой игре участникам приходится передавать информацию друг другу различными способами: словесно, образно, бывает даже приходится писать левой рукой текст, который другой участник команды должен будет прочитать. Так же известно, что практически никогда передаваемая информация не доходит до конечного адресата. Обозначим за Fi(x) функцию, которая преобразует текст передаваемой информации x в ту, которую получит участник i+1 от участника i. Тогда последний n-й участник получит данные y, которые будут выражаться следующей формулой:

y = Fn-1(Fn-2(…F2(F1(x))))

Но Вам необходимо исключить какие-либо внешние факторы, которые могут исказить исходную информацию и Вы должны реализовать программу «неглухой телефон», которая сможет безошибочно доставлять исходные данные, т.е. в нашем случае функция Fi(x) = x для всех i от 1 до n-1.
Входные данные

В единственной строке входного файла INPUT.TXT записано натуральное число от 1 до 100.
Выходные данные

В выходной файл OUTPUT.TXT нужно вывести в точности то же число, которое задано во входном файле.

Добавлено через 15 секунд
Цитата Сообщение от analogov net Посмотреть сообщение
Это как? Может быть 1,6%? Как может одна строчка кода, по сути, один маленький цикл иметь такую сложность?
на 1,6% там нужно ввести число, а потом его вывести... (Время: 1 сек. Память: 16 Мб Сложность: 1%)

Возможно, что Вы когда то играли в игру «Глухой телефон», либо слышали о ней. В этой игре участникам приходится передавать информацию друг другу различными способами: словесно, образно, бывает даже приходится писать левой рукой текст, который другой участник команды должен будет прочитать. Так же известно, что практически никогда передаваемая информация не доходит до конечного адресата. Обозначим за Fi(x) функцию, которая преобразует текст передаваемой информации x в ту, которую получит участник i+1 от участника i. Тогда последний n-й участник получит данные y, которые будут выражаться следующей формулой:

y = Fn-1(Fn-2(…F2(F1(x))))

Но Вам необходимо исключить какие-либо внешние факторы, которые могут исказить исходную информацию и Вы должны реализовать программу «неглухой телефон», которая сможет безошибочно доставлять исходные данные, т.е. в нашем случае функция Fi(x) = x для всех i от 1 до n-1.
Входные данные

В единственной строке входного файла INPUT.TXT записано натуральное число от 1 до 100.
Выходные данные

В выходной файл OUTPUT.TXT нужно вывести в точности то же число, которое задано во входном файле.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
18.03.2019, 18:11
ELchemist, analogov net, Байт, kolyacher, минимальный размер кода который у меня вышел для g++ 101 байт (считается без учёта пробелов и переносов строк)
C++
1
2
3
4
5
6
7
8
#include <bits/stdc++.h>
 
main()
{
    int64_t a, b, c;
    std::cin >> a >> b;
    std::cout << ((c=std::sqrt(a*b))*c - a*b ? 0 : c);
}
108 - 7 = 101
Code
1
2
$ cat cyberforum.cpp | sed 's/\s//g' | wc
      7       7     108
acmp ru index.asp?main=bstatus&id_t=844&lang=CPP понятия не имею как народ 93 байта сделал

Добавлено через 11 минут
Хотя, кажется можно как-то с этим увязать http://www.nuprl.org/MathLibrary/integer_sqrt/ очень хорошо прослеживается закономерность последовательности
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2019, 18:11

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

Вычислить длину диогонали квадрата, если известна длине его стороны a
Вычислить длину диогонали квадрата, если известна длине его стороны a Входные данные: Во входном потоке в первой строке дано...

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

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

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


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской) Options Preferences General Language
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru