Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import *
- import random
- def fast_mul(x, y):
- v = x * y
- b = False
- if x < 0 and x < 0:
- b = True
- z = 0
- q = 0
- if x % 2 != 0:
- q += 1
- z += y
- #print(x, y, z)
- while x != 0 and x != -1:
- if x > 0:
- x = floor(x / 2)
- else:
- x = ceil(x / 2)
- y = y * 2
- if x % 2 != 0:
- q += 1
- z += y
- #print(x, y, z)
- if b:
- z *= -1
- #print(x, y, z)
- try:
- assert z == v
- except AssertionError:
- print(False)
- print(z, v)
- else:
- return z
- #print(fast_mul(0,5))
- def fast_pow(y, x):
- v = pow(y, x)
- b = False
- c = False
- if x != y:
- c == True
- if y % 2 == 0 and x < 0:
- b = True
- z = 1
- q = 0
- if x % 2 != 0:
- q += 1
- z *= y
- #print(x, y, z)
- while x != 0 and x != -1:
- if x > 0:
- x = floor(x / 2)
- else:
- x = ceil(x / 2)
- y = fast_mul(y, y)
- if x % 2 != 0:
- q += 1
- z *= y
- print(x, y, z)
- if b:
- z *= -1
- #if c:
- # z = z - 1
- #print(x, y, z)
- try:
- assert z == v
- except AssertionError:
- print(False)
- else:
- return print(z)
- #fast_pow(7, 0)
- def fast_mul_gen(y):
- x = random.randint(2, 50)
- v = x * y
- b = False
- print("" + str(x) + " умножаем на " + str(y))
- if x < 0 and x < 0:
- b = True
- z = 0
- q = 0
- buf = 0
- if x % 2 != 0:
- q += 1
- z += y
- print("Z = " + str(buf) + " + " + str(y))
- buf = y
- while x != 0 and x != -1:
- if x > 0:
- x = floor(x / 2)
- else:
- x = ceil(x / 2)
- y = y + y
- if x % 2 != 0:
- q += 1
- z += y
- print("Z = " + str(buf) + " + " + str(y))
- buf = z
- if b:
- z *= -1
- try:
- assert z == v
- except AssertionError:
- print(False)
- print(z, v)
- else:
- return print("Z = " + str(z))
- fast_mul_gen(4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement