Задачка про числа

Jan 27, 2010 07:56


А вот попробуйте решить такое:
Найти сто первых чисел, сумма цифр которых кратна 7.
Тупым перебором просто, а вот если без него?

Leave a comment

hildisvini January 27 2010, 17:01:49 UTC
проверять на наличие нужных комбинаций цифр в числе - это тупой перебор?

Reply

rustydragon January 27 2010, 17:21:54 UTC
Тупой перебор, это

найдено = 0;

for (i=0; i < бесконечность && найдено < 100;i++){

if (summaCifer(i) mod 7 == 0){

найдено++;

print("Эврика");

}

}

отступы не сохраняются почему то :(

Reply

braindancer January 27 2010, 18:07:00 UTC
(новый коммент почему-то не добавляется, пришлось ответить)

Представим число как "abcd", каждая буква соответствует цифре числа

i:=0

for (d:=7; d>=0; d--) {
for (c:=7-d; c>=0; c--) {
for (b:=7-d-c; b>=0; b--) {
for (a:=7-d-c-b; a>=0; a--) {
print abcd
i++
if i=100 then exit
}
}
}
}

Как-то так?

Понятно, что синтаксис надо править, "print abcd" выглядит несколько иначе, ну и в общем случае надо как-то определить, сколько разрядов понадобится (может, например, надо abcdef).

Или даже не так - все то же самое, но число разрядов наращивать последовательно... Это уже лень расписывать :)

Reply

rustydragon January 27 2010, 19:27:05 UTC
"86" алгоритм найдет?

Reply

braindancer January 27 2010, 19:29:16 UTC
А. Епт. Кратна, а не равна. Тогда не годится.

Буду думать.

Reply

hildisvini February 1 2010, 14:03:34 UTC
Попробуйте в восьмеричной системе - легче думаться будет.

Reply

rustydragon February 1 2010, 14:55:17 UTC
Дык сумма цифр-то в десятичной.

Reply


Leave a comment

Up