Original geschrieben von DkH.Clay
jo allso:
gesucht sind 2 ganze, aufeinanderfolgende zahlen, deren quersummen jeweils durch 2006 ohne rest teilbar sind.
meine letzten c++ versuche sind schon nen weilchen her, also bräuchte ich etwas hilfe, denn ich glaube nicht das man da ohne n programm zu schreiben draufkommen, wenn doch belehrt mich eines besseren!
danke schonmal
Gesucht x.
x = SUM_i=0..n [ (10^i) * x_i ]
y = SUM_i=0..n [ (10^i) * y_i ]
y = x+1
x_q = Quersumme x = SUM_i=0..n [ x_i ] = 2006 * c_1
y_q = Quersumme y = SUM_i=0..n [ y_i ] = 2006 * c_2
c_1, c_2 e |N
Ueberlegung:
Moeglichkeiten fuer x_q und y_q:
y_q = x_q + 1 (letzte Ziffer ungleich 9) => scheidet aus
=> y_q = x_q + 1 - 9 * c_3, wobei c_3 die Zahl der '9' am Ende von x bezeichnet
=> 2006 * c_1 + 1 - 9 * c_3 = 2006 * c_2
<=> c_1 + (1 - 9 * c_3) / 2006 = c_2
Es muss also lediglich (1 - 9 * c_3) ohne Rest durch 2006 teilbar sein, d.h. 1 - 9 * c_3 = - c_4 * 2006 <=> (1 + c_4 * 2006)/9 = c_3
Das gilt z.B. fuer c_4 = 1 (c_3 = 2007 / 9 = 223 => ganze Zahl).
223 * 9 ist nicht durch 2006 teilbar, also brauchen wir noch irgendeine Ziffernfolge vorne, die als Quersumme (2005 + c_5 * 2006) besitzt, z.B. 2005.
Die Antwort ist also z.B. x = 111...<insg. 2005 Einsen>...111999...<insg. 223 Neunen>...999
Ein C++ Programm, das die Aufgabe korrekt beantwortet, sieht wie folgt aus:
int main()
{
printf("x = ");
for(int i = 0; i < 2005; i++) printf("1");
for(int i = 0; i < 223; i++) printf("9");
printf("\n");
return 0;
}
Duerfte wohl so aehnlich aussehen wie die Antwort von bog (bis auf 9 statt 1 und keine 7)