Producte Ràpid X45712


Statement
 

pdf   zip

Escriure una funció producte_rapid(n,m) que donat dos nombre enters n i m retorni el producte n ×\times m.

Només podeu fer servir sumes, restes, multiplicacions per 2 i divisions (enteres) per 2.

Entrada

La funció té dos nombres enters com a paràmetres.

Pista

Cal implementar l’algorisme de producte ràpid que es basa en que n×mn \times m és:

n×m=n×(m1)+nn \times m = n \times (m-1) + n

però si mm és parell tenim també que:

n×m=(2×n)×(m2)n \times m = (2 \times n) \times (\frac{m}{2})

Observacions

Aquest algorisme de la Pista només és vàlid si m0m \geq 0. Haureu de considerar que a la funció demanada el paràmetre m pot ser negatiu.

Un cop definida la funció, en provar-la al REPL de Python us hauria de sortir el mateix que podeu observar més avall.

Sample session
>>> producte_rapid(8,7)
56
>>> producte_rapid(8,0)
0
>>> producte_rapid(0,0)
0
>>> producte_rapid(0,5674389257)
0
>>> producte_rapid(3265942354732,5674389257)
18532228211672543914124
>>> producte_rapid(487329,74392856432)
36253796332150128
>>> producte_rapid(487329,10000)
4873290000
>>> producte_rapid(487329,1)
487329
>>> producte_rapid(1,74392856432)
74392856432
>>> producte_rapid(-2345, -6789)
15920205
>>> producte_rapid(-2345, 6789)
-15920205
>>> producte_rapid(2345, -6789)
-15920205
>>> producte_rapid(2345, 6789)
15920205
>>> 
Information
Author
Jordi Delgado
Language
Catalan
Official solutions
Python
User solutions
Python