Задача о счастливых числах
Вложений: 1
Вот такая задачка, нужно решить в Паскале
Я начала делать через массивы, но абсолютно не представляю, как найти количество счастливых чисел, с суммой цифр 13. Помогите пожалуйста Код:
Const n=6; |
Цитата:
|
Как один из вариантов :)
Цитата:
|
Спасибо)) Сейчас попробую)
|
Лёша, по-моему, в условии не полусумма, а вся сумма должна равняться 13. Нет?
|
Не, сравнивается сумма троек цифр шестизначного числа :)
Если сумма 1,2,3 цифр равна сумме 4,5,6 цифр, то такой билет считается счастливым и незамедлительно съедается на глазах у изумленного контроллера :)) В задании нужно вычислить количество возможных комбинаций троек, в сумме равных 13. А если общая сумма цифр числа будет равна 13, то такой билет просто не может считаться счастливым, так как не соблюдается принцип равенства суммы троек цифр. Общая сумма цифр числа счастливого билета равна удвоенной сумме одной из троек цифр. |
Юхуу, вроде все получилось:) еще раз спасибо
Код:
A[2]:=y; |
Ну вы радоваться то не торопитесь, задача решена не полностью, вы еще не реализовали механизм определения счастливого числа, введенного с клавиатуры :)
|
Цитата:
|
Цитата:
Код:
Var |
Владимир, как??? Там же всего 10*10*10=1000 комбинаций цифр.
Хотя, если вспомнить теорию вероятности... |
Цитата:
1. Ограничимся шестизначными числами, т.е. 0 в первой позиции не допускаем. Тогда мы можем найти полное число троек, дающих в сумме 13: Код:
Var Но!!! "Счастливым" является число, в котором СУММЫ троек цифр совпадают. Суммы, а не обязательно сами тройки! То есть "счастливой" является комбинация ЛЮБОЙ из 69 торек С ЛЮБОЙ ДРУГОЙ из них же! Вот так. И плюс к тому, в младшей тройке первый 0 допускается, т.е. там их - 75. Отсюда полное число комбинаций есть 69*75=5175. Уф, совпало! А вообще проще не умствовать и не лезть в дебри комбинаторики, а решить простым перебором. |
А почему первая цифра не может быть равной 0? как насчет такого варианта 067139? Такие номера часто встречаются, например, в кинотеатрах, как вспомню, так и начинает голова чесаться (мы раньше перед киносеансом в щелбаны играли на цифры в номерах билетов) :)
|
Цитата:
Цитата:
|
Это-то как раз не проблема и вполне объяснимо :)
Если следовать логике Владимира, первая тройка без 0 в начале дает 69 вариантов, вторая тройка даст вычисленные нами 75 комбинаций, в целом по билету будет 69*75=5175 комбинаций. Полное же количество вариантов с 0 в начале первой тройки даст нам 75*75=5625 комбинаций номеров :)) |
Цитата:
|
Цитата:
Цитата:
|
Формально вы правы, но на деле шестизначные номера билетов могут начинаться и с первых трех нулей и против этого ничего не поделаешь :))
Все дело в некорректности формулировки задачи. Следовательно, во всем виноват преподаватель, разработавший этот билет. На том и остановимся :D |
Цитата:
|
задача решается тривиально в этом случае :)
Цитата:
|
А вообще, Лёша, мне кажется, запутали мы бедную Стасю совершенно. Поди, уж сама не рада, что к нам обратилась. Надо как-нибудь ее выпутать. :D
|
Цитата:
|
Цитата:
Код:
var |
Я уже исправил, там надо дополнительное условие дописать, смотрите еще раз :))
Цитата:
А в целом для решения задачи в целом нафиг не нужно было заводить массив, можно было обойтись дополнительной переменной :)) Полное решение у меня есть где-то в загашниках, лет семь назад с детишками разбирали эту задачу от и до на 4 языках программирования, а сегодня сам еле-еле вспомнил решение :)) А всё некорректная формулировка задачи виновата :D |
Цитата:
if (x+y+z=13) and (a+b+c=13) then inc(n); Кроме того - нерационально: мой вариант (с n и m) предполагает 2000 прохождений цикла, а Ваш - 1000000 (грубо говоря). Тогда уж проще тупым перебором, как у меня в программе. Те же 900000. |
Можно, но не нужно.
И вообще, хоть и с избыточным кодом, но моё, не стыренное :)) Есть фирмы, где программистам платят по количеству строк кода, так там такое накручивают, что мой избыточный код - не более чем шалость :), но вы правы, исправлю сейчас. Насчет неоптимальности алгоритма - я же предупредил, что это вариант тупого перебора 9*10*10*10*10*10=900000 значений aka брут :)) |
Часовой пояс GMT +4, время: 10:55. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.