Déterminer le nombre N s'écrivant en numération décimale " a b c d ", tel que l'addition suivante soit vérifiée:
" a b c " + "d a b" + "c d a" + "b c d" = "a b c d "
( "a b c" est le nombre qui s'écrit avec les chiffres a, b et c par exemple " 2 3 6 " = 236 )
Les chiffres a,b,c,d peuvent être égaux ( mais non tous nuls quand même ! )
Analyse
simple mais élégant, la maitrise de l'art de la macro est indispensable
Programme
#define t(a,b,c) (a*100+b*10+c)
#define loop(a) for(a=0;a<10;a++)
#define s (t(a,b,c)+t(d,a,b)+t(c,d,a)+t(b,c,d)-a*1000-b*100-c*10-d)
void main (void) {
int a,b,c,d;
loop(a) loop(b) loop(c) loop(d)
if (!s && ( a||b||c||d) ) printf("%d %d %d %d\n",a,b,c,d);
}
Conclusion
a b c d 4 lettres à remplacer
une somme à dévoilée
quelques boucles imbriquées
par des macros simplifiées