Façons de créer un nombre avec la somme de un et de deux
Je me demande s'il existe un moyen de compter les manières possibles de faire la somme d'un nombre en utilisant seulement un et deux
Par exemple:
Nous avons le nombre 10. Le nombre 10 peut se résumer par:
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2
2 + 2 + 2 + 2 + 2
etc...
Merci d'avance à tous!
Réponses
Si l'ordre des éléments n'a pas d'importance, comme l'expliquent les commentaires (c'est-à 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2
- dire qu'il est identique à 2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
), il s'agit simplement de choisir le nombre d'éléments dans la sommation, qui peut être compris entre 5 et 10. Une fois le nombre d'éléments choisi, vous savoir exactement combien d'entre eux doivent être des 1 et combien d'entre eux doivent être des 2: pour x éléments, il y a 10-x 2, et le reste est 1.
Puisqu'il y a 6 nombres à choisir, c'est le nombre de façons de créer 10.
Plutôt que d'entrer dans des formules mathématiques complexes, je recommanderais l'approche DP.
int arr[N+1]; // Represents no. of ways to produce a number at index 1
// Like arr[5] is no. of ways to produce number 5
for(int i=0;i<=N;i++) {
arr[i] = 1; // As all 1s
}
for(int i=2;i<=N;i++) {
// if we add 2 now, check for no. of ways i-2 can be made,
// add it to current arr[i] value.
arr[i] += arr[i-2];
}
cout<< (arr[N]); // print
Nombre de façons de créer un nombre en utilisant seulement un = 1
Nombre de façons de créer un nombre en utilisant au moins un deux = floor(n/2)
Total =1 + floor(n/2)
Voir l' javascript
extrait de code ci-dessous:
let numWays = n => 1 + Math.floor(n/2);
for (let i=1; i<=20; i++)
console.log("Number of ways to create " + i + " is: " + numWays(i));