Programować każdy może (4)
Ania zadała mi dziś zagadkę. Trzy cyfry tworzą liczbę trzycyfrową, którą jak się pomnoży przez 9 to jest liczba czterocyfrowa, złożona z tych samych trzech cyfr, tylko w środku wstawione jest zero. Znaleźć te 3 cyfry.
Oczywiście dla niej to nie problem. Od razu znalazła. A ja wymiękłem. Ale poszedłem do kompa i rozwiązałem ten problem za pomocą młotka. Oto rozwiązanie:
#include <stdio.h> main() { int a, b, c; for (a=0; a<9; a++) for (b=0; b<9; b++) for (c=0; c<9; c++) { if ((a*100+b*10+c)*9 == a*1000+0+b*10+c) printf ("\nW1 ABC*9=A0BC %i%i%i*9 = %04i", a, b, c, (a*100+b*10+c)*9); if ((a*100+b*10+c)*9 == a*1000+b*100+0+c) printf ("\nW2 ABC*9=AB0C %i%i%i*9 = %04i", a, b, c, (a*100+b*10+c)*9); } }
No i wynik:
W1 ABC*9=A0BC 000*9 = 0000 W2 ABC*9=AB0C 000*9 = 0000 W2 ABC*9=AB0C 045*9 = 0405 W1 ABC*9=A0BC 225*9 = 2025 W1 ABC*9=A0BC 450*9 = 4050 W1 ABC*9=A0BC 675*9 = 6075
Fajnie się używa tego narzędzia:
http://www.compileonline.com/compile_c_online.php
Ale wracając do zagadki. Potem podszedłem do tego analitycznie i zauważyłem, że ostatnia cyfra musi być.... No własnie.
0*9=0
1*9=9
2*9=18
3*9=27
4*9=36
5*9=45 !!!!
6*9=54
7*9=63
8*9=72
9*9=81
Tylko przy 5 się nie zmienia, a więc ostatnia cyfra to 5 albo zero.
A przedostatnia? Jeżeli tam będzie wstawione 0 to musi być to 3, bo .... ojej, głowa pęka, to już lepiej zapuścić ten program.