Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431

Для каждого числа в отдельной строке вывести его квадратный корень

06.07.2015, 12:43. Показов 5536. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребята, помогите с этой простой задачкой, объясните , что к чему, спасибо.
________________________________________ ________________________________________ ___________
Исходные данные
Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов и переводов строк. Размер входного потока не превышает 256 КБ.
Результат
Для каждого числа Ai, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки.
Пример
исходные данные
1427 0

876652098643267843
5276538

результат
2297.0716
936297014.1164
0.0000
37.7757

 Комментарий модератора 
Не задавайте в чужой теме вопросы, с ней не связанные. Создавайте свою тему с осмысленным заголовком и подробно изложенной сутью проблемы
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2015, 12:43
Ответы с готовыми решениями:

Для каждого числа вывести его квадратный корень
#include <stdio.h> #include <math.h> void main() { unsigned long a; scanf("%262144i", &a); for (long i = a; i != 0;...

Для каждого Ai, начиная с последнего и заканчивая первым, вывести его квадратный корень не менее чем с четырьмя знаками
задача звучит так "Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов...

Для каждого Ai, начиная с последнего и заканчивая первым, вывести его квадратный корень не менее чем с четырьмя знаками после запятой
задача звучит так "Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов...

14
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 13:48
Лучший ответ Сообщение было отмечено izuchaju_python как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from math import sqrt
import re
 
def main():
    stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
    p = re.compile('[ \n]')
    l = [x.strip() for x in p.split(stream) if x != '']
    for i in reversed(l):
        print ('%.4f' % sqrt(float(i)))
 
if __name__ == '__main__':
    main()
как прикрутить к этому "поток" разберёшься сам я надеюсь
1
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
06.07.2015, 20:02  [ТС]
если скажите какие темы в питоне нужно знать,чтобы это решить, был бы благодарен очень сильно.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 20:42
работа со строками, генераторы списков, итерация по списку, регулярные выражения )

Добавлено через 1 минуту
Да, и форматирования вывода
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 20:53
izuchaju_python, тебе же уже решили, смотри, теперь просто смотри, что не понятно и читай про это.

Добавлено через 58 секунд
Цитата Сообщение от Kurles Посмотреть сообщение
регулярные выражения
Они тут вообще даже близко не нужны, это все равно, что вскапывать клумбу метр на метр экскаватором.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 21:29
Цитата Сообщение от alex925 Посмотреть сообщение
Они тут вообще даже близко не нужны, это все равно, что вскапывать клумбу метр на метр экскаватором.
Ну почему же, для разбивки по 2м или более сепараторам можно вполне использовать. Конечно можно предварительно второй сепаратор заменить на первый, но с регэекспом проще как по мне. Или есть другой способ разбивки строки по сложному условию? Поделитесь, интересно.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 21:57
Цитата Сообщение от Kurles Посмотреть сообщение
Ну почему же,
Потому, что это применение эксковатора для вскапыванию клумбы метр на метр. С разбинием великолепно справляется старый добрый метод строк split.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from math import sqrt
 
stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
l = [x for x in stream.split()]
for i in reversed(l):
    print('%.4f' % sqrt(float(i)))
В итоге я избавился от условия, от вызова метода strip, от импортирования и задействования не нужной библиотеки, а ведь это на эти все действия тратится драгоценное время и ресурсы компа. После этого, люди начинают жаловаться, что язык медленный, когда на самом деле проблема не в языке, а в быдлокоде.
1
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 22:02
Хотя да, в данном случае split() + strip() обойтись...
Python
1
2
3
l = [x.strip() for x in stream.split(' ') if x.strip() != '']
    for i in reversed(l):
        print ('%.4f' % sqrt(float(i)))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 22:05
Kurles, Strip и условия не нужны, кури лучше код.
Кстати переменные нужно называть по человечески, а не одной буквой + уже давно в основном используется метод format.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 22:16
Цитата Сообщение от alex925 Посмотреть сообщение
l = [x for x in stream.split()]
Да уж, точно, читайте доки... А скорости действительно иногда не хватает, приходиться расширения сишные писать, благо инструменты и возможность есть.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 22:26
Цитата Сообщение от Kurles Посмотреть сообщение
А скорости действительно иногда не хватает
Возможно задачи специфичные, но на сколько я вижу ты побыдлокодить любишь, не удивительно, что код медленно работает.

Добавлено через 5 минут
Вот тебе живой пример как твой быдлокод затрудняет обработку.
Мой код выполняется за: 14.809430279012304
Твой за: 25.27179295400856
А ведь это элементарщина, на пару строк......
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import re
import timeit
 
from math import sqrt
 
def test1():
    stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
    l = [x for x in stream.split()]
    for i in reversed(l):
        a = '%.4f' % sqrt(float(i))
 
def test2():
    stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
    p = re.compile('[ \n]')
    l = [x.strip() for x in p.split(stream) if x != '']
    for i in reversed(l):
        a = '%.4f' % sqrt(float(i))
 
print(timeit.timeit("test1()", setup="from __main__ import test1", number=1000000))
print(timeit.timeit("test2()", setup="from __main__ import test2", number=1000000))
+ если если использовать обычный цикл, а не генератор списка, то возможно ещё скорость возрастёт.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 22:45
Как то ты быстро ярлыки навешиваешь. По-моему это не быдлокод, а недостаочное знание инструмента, все мы учимся. Вот не знал, что split() без параметров все пробелы и символы переноса строки убирает, просто решал задачу разбиения строки с большим, чем один сепаратором. Тогда уж и твой пример можно быдлокодом обозвать, можно было чуть быстрее сделать вообще без генератора или доп. списка:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from math import sqrt
 
stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
for i in reversed(stream.split()):
    print('%.4f' % sqrt(float(i)))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 22:59
Kurles, Я только правил твой код, это не я накатал генераторы и т д, там что на меня стрелки перекинуть пытаться не надо. Выложить без генераторов хотел, просто не посчитал нужным уже.

Кстати, замерял без генераторов, код выполняется 13 сек.
0
06.07.2015, 23:03

Не по теме:

если ты такой перфекционист, то мог бы и поправить. Ладно, закругляемся, полный офтоп пошёл. В любом случае за тыкание носом в split() без параметров благодарен.

0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
07.07.2015, 11:02
Преимущество генератора(цикла) над списком проявляется на больших объемах данных
Python
1
2
3
4
5
6
7
8
9
10
11
from math import sqrt
stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
print("\n".join('{:.4f}'.format(sqrt(int(num))) for num in reversed(stream.split())))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.07.2015, 11:02
Помогаю со студенческими работами здесь

Для каждого слова в отдельной строке вывести YES если его можно сложить из печенья, и NO если нет
Вот условия задачи И снова знаменитые буквы из печенья поступили в продажу! Их можно не только есть - с ними можно еще и играть. Ваша...

Если число целое,то вывести сумму его цифр,если нет,то вывести корень квадратный из модуля числа
Если число N целое,то вывести сумму его цифр,если нет,то вывести корень квадратный из модуля числа.

Для каждого числа найти корень квадратный, если дробная часть меньше 5, в противном случае найти квадрат данного числа
Даны три положительные действительные числа. Для каждого числа найти корень квадратный, если дробная часть меньше 5, в противном случае...

Для каждого теста в отдельной строке вывести число людей, носящих белые шляпы или -1
Белые шляпы В комнате находится несколько людей. На каждом одета белая или черная шляпа. Каждый человек подсчитывает количество белых...

Найти все числа, для каждого из которых выполняется условие: кубический корень из числа равен сумме его цифр
На заданном числовом промежутке требуется найти все числа, для каждого из которых выполняется условие: кубический корень из числа равен...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru