fonction puissance(val x:reel; val i: entier): reel; var p:reel; debut si i=1 alors retourne x sinon p:=puissance(x,i/2); si i%2=0 alors retourne p*p sinon retourne p*p*x finsi finsi fin finfonction;
Réponse
fonction pgcd (val m,n : entier):entier; debut si n=0 alors retourne(m); finsi retourne(pgcd(n, m % n)); fin finfonction
procedure Appliquer(val i,sommemax:entier; ref T: tab); debut si i=0 alors P(n,T); sinon T[i]=1; tantque T[i]<=B[i] et T[i]+(i-1)<=sommemax faire Appliquer(i-1, sommemax-T[i], T); T[i]:=T[i]+1 fintantque finsi fin finprocedureet Appliquer(n,K,T); fait ce qui est souhaité.
procedure Appliquer(val n:entier; ref T: tab); var i:entier; var somme:entier; debut somme:=n; pour i allant de 1 a n par pas de 1 faire T[i]:=1; finpour; repeter P(n,T); i:=1; tantque i<=n et (T[i]=B[i] ou somme=K) faire somme:=somme-T[i]+1;T[i]:=1;i:=i+1 fintantque; si i<=n alors T[i]:=T[i]+1;somme:=somme+1 finsi jusqu'a i>n finrepeter fin finprocedure