Как написать программу перемножения двух чисел

Кажется, пора привыкнуть, но не перестаю удивляться идиотизму задаваемых иногда задач. «Главное — скорость», и поэтому нельзя применять специально сделанную для этого в процессоре аппаратную фичу.
«Нужно выиграть этап Формулы-1, но мотор на вашем болиде должен быть от ‘Запорожца’ «

Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
Существуют ограничения на диапазон представляемых чисел в зависимости от типа данных.
Это же Python — ограничение только размером памяти
f3000.jpg
Пользователь
Регистрация: 02.10.2019
Сообщений: 10

Кажется, пора привыкнуть, но не перестаю удивляться идиотизму задаваемых иногда задач. «Главное — скорость», и поэтому нельзя применять специально сделанную для этого в процессоре аппаратную фичу.
«Нужно выиграть этап Формулы-1, но мотор на вашем болиде должен быть от ‘Запорожца’ «

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

Умножение в столбик. Как правильно умножать в столбик? Как объяснить умножение в столбик?

Как это можно сделать на таком компьютере эффективно? Напишите функцию, которая выполняет умножение двух числе с использованием только +, -, > (деление на 2).

Регистрация: 04.02.2011
Сообщений: 4,439
экзотический механический компьютер.

Этакий арифмометр Феликс. Со встроенным компилятором Python’а . Ну-ну.
Вот так мы сидим, озадачиваемся почесанием левой ногой правого уха, а компиляторы и ОС для нас строгают дядюшка Билл и дядюшка Радж.

Последний раз редактировалось digitalis; 18.10.2019 в 20:17 .

Источник: www.programmersforum.ru

Программа на C++ для умножения двух чисел

В этой программе на C++ пользователя просят ввести два числа (числа с плавающей запятой). Затем произведение этих двух чисел сохраняется в переменной и отображается на экране.

Читайте также:
Что такое программа potplayer

#include using namespace std; int main() < double firstNumber, secondNumber, productOfTwoNumbers; cout > firstNumber >> secondNumber; // Performs multiplication and stores the result in variable productOfTwoNumbers productOfTwoNumbers = firstNumber * secondNumber; cout Enter two numbers: 3.4 5.5 Product = 18.7

В этой программе пользователю предлагается ввести два числа. Эти два числа, введенные пользователем, сохраняются в переменных firstNumber и secondNumber соответственно.

Затем оценивается произведение firstNumber и secondNumber, и результат сохраняется в переменной productOfTwoNumbers . Наконец, на экране отображается productOfTwoNumbers .

  • Преобразование восьмеричного числа в десятичное и наоборот в C++
  • Преобразование двоичного числа в восьмеричное и наоборот в C++
  • Как перевернуть строку в C++
  • Свежие записи
  • Функция iscntrl() в C++
  • Функция isdigit() в С++
  • Функция isblank() в C++
  • Функция isgraph() в C++
  • Функция islower() в C++

Источник: calmsen.ru

Умножение двузначных чисел в столбик. Как умножать столбиком?

Как перемножить числа в списке?

пользователь вводит любые числа в строку которые добавляются в список сумму можно найти sum(spisok) а как найти произведение? можно вроде циклом через for а если например в одну строку как реализовать?

Отслеживать
user536011
задан 3 дек 2020 в 9:28
813 1 1 золотой знак 8 8 серебряных знаков 29 29 бронзовых знаков

9 ответов 9

Сортировка: Сброс на вариант по умолчанию

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

import functools print (functools.reduce(lambda a, b : a * b, lst))
Отслеживать
Я бы добавил ещё и третью строчку, с импортом оператора умножения =) Upd: А, это есть ниже)
3 дек 2020 в 11:30
а почему сделали общим?
3 дек 2020 в 14:12
3 дек 2020 в 14:33

Все ответы здесь отстали от современности. Как насчет python-3.8 и выше?
math.prod

import math math.prod([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Это пожалуй самое простое и стандартное решение ИМХО.

Отслеживать
5,345 1 1 золотой знак 14 14 серебряных знаков 33 33 бронзовых знака
ответ дан 21 дек 2020 в 11:51
USERNAME GOES HERE USERNAME GOES HERE
10.3k 21 21 золотой знак 25 25 серебряных знаков 53 53 бронзовых знака

Читайте также:
На какой программе стирать куртки в машине

from functools import reduce # Функция для свёрки последовательности from operator import mul # Функция, перемножающая 2 числа spisok = [16, 15, 9, 14, 13] # Исходный список result = reduce(mul, spisok) # / Список для свёртки # / Используем умножение # / Сворачиваем контейнер
Отслеживать
ответ дан 3 дек 2020 в 10:16
Mikhail Murugov Mikhail Murugov
5,345 1 1 золотой знак 14 14 серебряных знаков 33 33 бронзовых знака

Можно реализовать функцию mul

def mul(list_): n = 1 for el in list_: n *= el return n

либо так, с помощью lambda и рекурсии

mul = lambda arr:arr[0] * mul(arr[1:]) if arr else 1
Отслеживать
ответ дан 3 дек 2020 в 9:41
19.3k 5 5 золотых знаков 20 20 серебряных знаков 55 55 бронзовых знаков
тут пять строк, не считая той, где это будет вызываться. Про for автор даже в вопросе сам написал.
3 дек 2020 в 9:42

С импортом можно и так:

import numpy as np result = np.prod(np.array(mylist))
Отслеживать
ответ дан 3 дек 2020 в 9:51
Serg Bocharov Serg Bocharov
1,694 1 1 золотой знак 5 5 серебряных знаков 11 11 бронзовых знаков
Тяжеленный numpy для таких простейших задач.
3 дек 2020 в 10:17
3 дек 2020 в 10:43
let num = Number(prompt()) let lis = [] let mult = [] while (num) < num = Number(prompt()) lis.append(num) >var m = 1 for (let n = 0; n

Отслеживать
ответ дан 3 дек 2020 в 10:56
Alexander_Sky Alexander_Sky
87 8 8 бронзовых знаков
А где тут python?
3 дек 2020 в 10:58
а как это все записать в одну строчку?
3 дек 2020 в 11:01

3 дек 2020 в 11:01

)) правда, не обратил внимание, но это в целом не сложно должно быть переделать, если видишь на одном языке

3 дек 2020 в 11:02
3 дек 2020 в 11:17

Если очень захотеть, то можно и в одну строчку записать, но так конечно делать не стоит , например перемножить ‘2 3 4 5’ = 120

print(list(map(lambda s, t=[1]: [t.append(i*t[-1]) for i in map(int, s.split())][0] or t[-1], [‘2 3 4 5’]))[0]) # 120
Отслеживать
ответ дан 17 июн 2021 в 7:47
vadim vaduxa vadim vaduxa
8,897 14 14 серебряных знаков 24 24 бронзовых знака

Читайте также:
Программа для подбора дисков на авто 3d

Я приведу не очень практичное, но красивое решение в одну строку. Оно не использует eval , побочные эффекты при работе со списком или именованные функции.

Если именованные функции разрешены, то решение может выглядеть так:

def p(a): if a: return a[0] * p(a[1:]) return 1 print(p([1, 2, 3, 4, 5]))

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

p = (lambda a: a[0] * p(a[1:]) if a else 1); print(p([1, 2, 3, 4, 5]))

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

p = lambda f, a: a[0] * f(f, a[1:]) if a else 1 print(p(p, [1, 2, 3, 4, 5]))

Кажется мы ничего не выиграли: всё равно два оператора и глобальная переменная p . Однако сделан очень важный шаг — тело лямбды не использует глобальные переменные. Глобальная переменная используется в операторе print . Избавимся от неё:

p = lambda f, a: a[0] * f(f, a[1:]) if a else 1 y = lambda f, a: f(f, a) print(y(p, [1, 2, 3, 4, 5]))

Стало только хуже: три строки и две глобальные переменные. Зато каждая глобальная переменная задействована только один раз. Делаем подстановку:

print((lambda f, a: f(f, a))(lambda f, a: a[0] * f(f, a[1:]) if a else 1, [1, 2, 3, 4, 5]))

Читается тяжело, но задача решена в одну строку без глобальных имён и волшебных вызовов eval .

P.S. Читайте Fixed-point combinator чтобы узнать откуда пошло это решение.

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

P.P.P.S. Не пытайтесь повторить это дома.

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru