Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2021, 14:41   #1
vlad123456299
Новичок
Джуниор
 
Регистрация: 02.10.2021
Сообщений: 1
По умолчанию метод Карацубы, нужна помощь

Здравствуйте есть вот такие числа X = 21625695688898558125310188636840316 594920403182768
Y = 13306827740879180856696800391510469 038934180115260
Теперь для этих двух значений, что у меня прописаны вначале надо количество сколько раз встречалось ad+bc=105, ad+bc=72,ad+bc=12. Мне считает, 1 и третье правильно, а 2 нет . Правильные ответы при ad+bc=105 - 1 или 3 или 4, ad+bc=72 - 16 или 7, ad+bc=12 - 17 , 15 , 5. Кто может помочь, можете написать правильно строчку кода, где ошибка
Вот код

def karat(x1, y1):
x1 = str(x1)
y1 = str(y1)

x2 = len(x1)
y2 = len(y1)

if (int(x2) == 1 and int(y2) == 1):
return int(x1) * int(y1)
else:
half1 = int(math.ceil(x2 / 2.0))
half2 = int(math.ceil(y2 / 2.0))

if (half1 < half2):
half = half1
else:
half = half2

h1 = x2 — half
h2 = y2 — half

if h1 == 0:
a = 0
else:
a = int(x1[0:h1])

if h2 == 0:
c = 0
else:
c = int(y1[0:h2])

b = int(x1[h1:x2])
d = int(y1[h2:y2])

ac = karat(a, c)
bd = karat(b, d)
adbc = karat(a + b, c + d) — ac — bd

if adbc in dictionary:
value = dictionary[adbc]
value = value + 1
dictionary.update({adbc: value})
else:
dictionary[adbc] = 1

results = ac * math.pow(10, x2) + adbc * math.pow(10, x2 / 2) + bd

return int(results)



result = karat(16852874993283282978146556392 7858366791935584939145345 6921116729, 71141928485777545879697446265585715 3672898316795455299989534 8492)
print(result)
print(’’)
for key in sorted(dictionary.keys()):
print(key, " :: ", dictionary[key])
input()
vlad123456299 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
срочно нужна программа на c/с++: метод метод Дэвидона–Флетчера–Пауэлла. найти стационарные точки (минимум и седловую точку) Elanta Фриланс 4 12.05.2014 14:13
Алгоритм Карацубы. Ingrida Помощь студентам 2 16.05.2010 20:05
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12