Produit maximal de k termes consécutifs
Exercice
Coder une fonction produit_maxi
- qui prend en paramètres
- un tableau d'entiers positifs ou nuls
valeurs,
- et un entier strictement positif
k
- et qui renvoie le produit maximal de
k entiers consécutifs du tableau valeurs.
On garantit que le tableau valeurs est de taille au moins égale à k.
Exemples
>>> produit_maxi([0, 1, 2, 3, 2, 1, 0], 3) # Pour les termes consécutifs 2, 3, 2
12
>>> produit_maxi([0, 1, 2, 3, 2, 1, 0], 1) # Pour le terme 3
3
>>> produit_maxi([0, 1, 2, 3, 2, 1, 0], 0) # Pour le produit vide
1
Nombre d'opérations limité
Il est possible de résoudre ce problème en calculant, pour chaque fenêtre de k nombres, le produit des k éléments qu'elle contient. Cette méthode effectue (n - k + 1) * (k - 1) multiplications.
On peut toutefois être plus efficace en effectuant moins de n multiplications et n divisions.
La différence est sensible : pour un tableau de \(10\,000\) valeurs et une valeur de k égale à \(100\), la première approche effectue \((10\,000 - 100 + 1) \times (100 - 1) = 980\,199\) multiplications alors que la seconde fera au maximum \(2 \times 10\,000 = 20\,000\) multiplications et divisions.
On limite donc le nombre de multiplications et de divisions possibles à trois fois le nombre d'éléments.
.128013]x,59/f78r;nb _o=ylaepcwgu)*vd461z3kméhtsP(S0+2[-i:050E0v0O0u0Y0t0P0o0x0t0u0P0P0r010O0Y0w010406050P0A0L0L0u0k0s040S0q0t0A0@0q0m050g0~1012140|0w04051k1d1n0g1k0|0E0Y0D0,0.0:0=0N0Y0z0N0t1B0N0O0`050%0n0t0v1w0/0;011A1C1E1C0O1K1M1I0O0k1l0O0N1O1y010h0)0v0m0u0L0v010,170P0w0u0m0=0V1I1_1{1)1Q1,1M1/1;0`0a0o0Q0k0q0w0q0P0Y1a0m0o0#1@0k0k0v0x2i1d200m1l0g1%2v1!1$1#1J0E220=1E0m1.2f1I1t1v0-1P2F0Y2H0m0q2L1I0w2o1l2t2v2Z0}1`2j2N1*2S0k110t0`0o0H2s2%0{2$212)1Q2+2-2/0V2=1{2@2t2E012|0u2.040o0J302u0|332`0=36380o0F3c322%343i2/0e3m3e3o3g350q2,372/0G3t2^2(1x2{3y2}390i3D3f3G3h3I3A390j3M3v3O3x3z3j0f3U2_3W3q040H0T3#3F2O3X3J0H2;1e2?3u3$3.3(0H2 3?313^3-2*3Q380H3b3~3d3E3p430`0H3l473n3_423Y4c3s4f404a4j3)3C4m493w3{3L4s3N3`4b3)3T4x3V4z4p0H3!4D4h3H4p0V3+4J414L3J0V3=2Z4n4u4A0V3}4V4t3%4Y464#4y4i4S4e4*4E4,3R0V4l4/4K3P4M4r4^4Q4`4S4w4}4o4S4C524X4M4I564%4p0J4O5a4F3J0J4U2?1o2X1d2L2y0E1$2D3w0x2T1=1l5o1m5m2#4f055u0#2Y4:1Q0K0`0#0h3m4$3.0y2/5N4+2{0h0`2W2T0A2h0p110c0Y5S5H0=0_040R5)4_350`0D370v0A0k0P5/4~015,0d3m0o5O2*0`0K5|345,0B0Z3t0o6d625T3h0`0m0n0p0I0M2c5{4f6f5*010q0`0r61631Q0L0Y0`5e3@6e6r5:0m5W2c0E5Z0O0p0P1{0P0p0m0A0t6x6g6t6v6W6s6A4c6c6e6y0=5J040h3y6!6H0`5(6q6*6t5Q042Q6:5}6j0`0k1{0z0v673w5,5.5C6X6I0466796s696b4m6F6F6^7b0c6}346u046w6@7a5=5@5_6p2#6X5,0W753%6=7D3.5,0b6(7j6G5}6,0Y5M7t6s7m7o3w7q0r7s2Z7M346$046D316^5,7h4V7L7L7l6i6k6m6o7U3W7q0U7Y2?7!3w7$5j3 7.7~3W6,0v0*747e5:7+7K83843`6J5Y5!6P0m6R6T6V7R5:7q0C7|318f64047n7i6)6X7O7Q7Z7:046j6l6n2f7^3.7W8t2u8v6z6B7%7G1*8c8z7/7u045$6?8E6X7W8L8w5X6L8j6Q6S6U8d6^86888U1Q8W7-7.8F8#8*1Q8)8p5}7$7(3d067k8B0`6.0k906h6{9e6_6=1c933p0n7072897z7f0`789r6;7c8_5+0`609l4u9n04259y5~9t9H7b5?1M7x9H696a8d997S0`8y8%6s929X9w9M5^5`9P0`7C8a6~7F9C7_0`0X9h7b7d9v5}7I9S8A6s8C9?9V9h8N9h959)047,6E8e6d8F8H7?8K9/8M9;8O396^809|ab9a04870P9q5k7A0`a882aa8Q9f8,6M6O8/8na20`0g0gajaA5;8x3t988}8Z9W7}6^9ZaU8Z9$9O9,689*9K9.9_a$047J8X7j8?6=8DaX9UaOag1*a3a_8R6Ca6ax3dazaM7bad8J7ya?8q0`7{a48S81b1aR9~0`arat7)ava7ana/8ZaC8.8l8:8o9!5}8raL8FaT3 aQ8Ybh6{a=8uac7=b6aH7rbz6Xa5a|0=0q6`1{0Ea004br6N8k8m8;bR6Y04020z0O0lbX8 a#76awbo9T9wb:bw7p6Zb(7bbZaEbtaG4mbDaM6,2o0O5_9kb{4u0`b`3@1d5E0v2v2Wcj5n1u5p2y2B2w0u1Lcm0g5o0|cw0$0(0*04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)