Логические задачи и головоломки
26 Май 2012, 11:05:06
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Новости
:
Начало
Правила
Помощь
Поиск
Войти
Регистрация
Чат
Логические задачи и головоломки
>
Логические задачи и головоломки
>
Помогите решить!
>
Задача с числами
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Задача с числами (Прочитано 772 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Базика
Новичок
Offline
Сообщений: 4
Задача с числами
«
:
26 Май 2011, 21:16:34 »
Помогите пожалуйста решить задачу:
Вычислить рекурсивно число шестизначных чисел, у которых сумма первых четырёх цифр равна 26, а сумма последних двух равна 14.
Записан
devnull
Старожил
Offline
Сообщений: 455
Re: Задача с числами
«
Ответ #1 :
26 Май 2011, 22:01:24 »
Рекурсивный способ решения к этой задаче плохо подходит. Но если уж так надо, то можно рекурсивно вычислить сумму цифр шестизначного числа:
функция сумма (параметр: число)
если число = 0
то вернуть 0
иначе вернуть (число % 10) + сумма(число / 10)
Здесь число % 10 обозначает остаток от деления числа на 10, а число/10 - это целочисленное деление на десять.
Ну а потом надо только убедиться что сумма всех цифр числа равна 26+14=40, а сумма последних двух = 14.
Записан
Базика
Новичок
Offline
Сообщений: 4
Re: Задача с числами
«
Ответ #2 :
26 Май 2011, 22:35:59 »
но таким способом можно проверить на заданные условия только конкретные числа, а как определить сколько всего существует таких чисел?
Записан
devnull
Старожил
Offline
Сообщений: 455
Re: Задача с числами
«
Ответ #3 :
26 Май 2011, 23:49:06 »
Цикл от 100000 до 999999 ?
Записан
zhekas
Старожил
Offline
Сообщений: 405
Re: Задача с числами
«
Ответ #4 :
27 Май 2011, 00:21:59 »
Цитата: devnull от 26 Май 2011, 23:49:06
Цикл от 100000 до 999999 ?
достаточно разбить задачу на 2:
1) Сумма цифр четырёхзначного числа равна 26
2) Сумма цифр двухзначного числа равна 14
это намного упростит перебор
Записан
Базика
Новичок
Offline
Сообщений: 4
Re: Задача с числами
«
Ответ #5 :
27 Май 2011, 00:23:24 »
Вы не могли бы ещё пояснить действие в функции: почему если число не ноль нужно найти его остаток от деления на 10(почему на 10?) и сложить со значением функции, поделённом на 10?
Записан
zhekas
Старожил
Offline
Сообщений: 405
Re: Задача с числами
«
Ответ #6 :
27 Май 2011, 00:23:46 »
плюс подсчёт можно совершать, не перебирая все цифры
Записан
zhekas
Старожил
Offline
Сообщений: 405
Re: Задача с числами
«
Ответ #7 :
27 Май 2011, 00:29:22 »
всегда путаюсь. Первые четыре цифры - это, начиная с разряда единиц или разряда сотен тысяч
Записан
zhekas
Старожил
Offline
Сообщений: 405
Re: Задача с числами
«
Ответ #8 :
27 Май 2011, 00:58:44 »
если речь зашла о программировании, то данная задача решается намного быстрее именно через рекурсивную функцию
f(n,a,b) - это целочисленная функция, которая возвращает количество чисел, рангом n, сумма цифр которых равна a. b - показывает можно ли, чтобы первая цифра была нулевой или нет.
итак тело функции
заведём счётчик k, который будет суммировать варианты.
k=0;
if (a>9*n)или(a<0)
то функции присваиваем значение 0 и выходим из функции
иначе
если (n=1)
то функции присваеваем 1 и выходим из функции
иначе
заводим счётчик i это цифра в нашем числе, с которой мы работаем.
for i=b to 9 do
k:=k+f(n-1,a-i,0);
присваеваем фукции значение k и выходим из данной функции
соотвтвенно
вам надо найти
f(4,26,1)*f(2,14,0)
Записан
Базика
Новичок
Offline
Сообщений: 4
Re: Задача с числами
«
Ответ #9 :
28 Май 2011, 04:00:42 »
Спасибо большое за помощь!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Логические задачи и головоломки
-----------------------------
=> Логические задачи
=> Математические задачи
=> Физические задачи
=> WWW-задачи
=> Авторские задачи
=> Оптические головоломки
=> Задачи-игры
=> Помогите решить!
-----------------------------
Общение
-----------------------------
=> Наука, философия и религия
=> Отдых и развлечения
=> Наше общество
=> Твердое и мягкое
=> Юмор
=> Свободное общение
=> Флудильня
-----------------------------
Cайт и форум - технические вопросы
-----------------------------
=> Новости и объявления
=> Отзывы и предложения
=> Ошибки и замечания
=> Задачи сайта и ответы к ним
Загружается...