Page web ISIMA
Fichier .md source

SCHIRRA Rémi Prep ISIMA 1 - 2023-2024

Défi de programmation - The River II


Introduction

Le problème propose The River II consiste en determiner si une position dans une rivière digitale peut être un point d’intersection de deux rivières.
Une rivière digitale est définie en fonction d’un chiffire k, pour laquelle le chiffre suivant est la valueur de k à laquelle on ajoute la somme des chiffres composant k.

Approche utilisée

Description synoptique

A partir d’une position donnée, il suffit d’essayer des nombres plus petit que la position et regarder si son terme suivant est égal à la position donnée. Si on en trouve un, la position donnée est un point d’intersection sinon, non.

Algorithme

river : position entrée par l’utilisateur

Fonction solution :
Boucle de 1 jusqu’à river :

Renvoyer faux (0)

Résolution

#include <stdio.h>

// fonction calculant la somme des chiffres d'un nombre
int sum(int num) {
    int sum = 0;
    while (num != 0) {
        sum += num % 10;
        num /= 10;
    }
    return sum;
}

int solution(river) {
    for (int i=1; i<river; i++) {
        // Boucle sur tout les nombres plus petit que river
        if (i + sum(i) == river) return 1; 
    }
    return 0;
}

int main()
{
    int r_1;
    scanf("%d", &r_1);
    
    printf(solution(r_1) ? "YES" : "NO");

    return 0;
}

Comparaison avec une autre solution

A partir de cette solution externe :

#include <stdio.h>

int main()
{
    int r_1, i, j, s, test = 0;
    scanf("%d", &r_1);
    for(i = r_1 -1 ; i > 0 && !test ; i--){
        s = 0, j = i;
        while(j) s += j%10, j /= 10;
        if(i+s == r_1){
            test = 1;
        }
    }
    printf(test ? "YES" : "NO");

    return 0;
}

Cette solution a la même logique que la mienne, sauf que les nombres sont vérifié dans l’ordre inverse. J’ai aimé dans cette solution la manière compacte de calculer la somme des chiffres d’un nombre.

Bilan

Après avoir analyser le problème, je l’ai trouvé plutôt simple à résoudre et je n’ai pas rencontré de difficultés.