Inverse de l’obtention d’un rest?

Je prends un nombre saisi par l’utilisateur, en ajoutant 7, puis en divisant par 10, puis en prenant le rest et en utilisant cette valeur comme nouvelle valeur. Nous supposons également que le nombre saisi sera TOUJOURS composé de 4 caractères. Par exemple, l’utilisateur entre 1234, 1235, 9999, etc.

Cela ressemblerait à ceci:

int num; printf("Input a number: "); scanf("%d", &num); num = (num + 7) % 10; printf("Here is the number after my calculations: %d", num); 

Maintenant, il faut que je trouve comment faire l’inverse.

Comment puis-je obtenir le numéro d’origine saisi si je ne reçois que le rest?

Il existe de nombreuses entrées qui donneront la même sortie (par exemple, 1000, 1010, 1020, 1030, etc. renverront 7). Par conséquent, il est impossible de restaurer l’original à quatre chiffres.

Si, par contre, vous saviez que les entrées étaient à un chiffre, vous pouvez procéder comme suit pour les restaurer:

 num = (num + 3) % 10; 

(Ajouter 3 en arithmétique modulo-10 revient à soustraire 7.)

Vous pouvez rétablir le numéro dans d’autres circonstances, mais malheureusement, dans le cas général à quatre chiffres, il n’est tout simplement pas possible.

Pour être plus précis sur ce qui a été dit dans les commentaires: le rest après la division par 10 vous donne le dernier chiffre décimal (le moins significatif) d’une entrée.

Supposons que j’obtienne un rest de 2. Si l’entrée a quatre chiffres, cela signifie que l’entrée était xyz2 , où x , y et z sont chacun un chiffre. Tout chiffre que je remplis pour x , y et / ou z donne le résultat correct, le rest après la division.

Après cela, il ne rest plus qu’à inverser la partie 7 ajoutée. Cela signifie simplement que pour tout xyz2 donné, nous devons soustraire 7 (et normaliser en ajoutant 10, si le résultat est négatif) pour obtenir une entrée qui aurait pu produire ce résultat. Chaque valeur possible pour la partie xyz sera une entrée valide qui aurait pu produire ce résultat. Le résultat manque de données pour indiquer laquelle de ces entrées a été utilisée pour produire ce résultat particulier.