Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2012, 20:26   #21
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Poma][a,Здравствуйте!
сколько всего(одинаковых) половинок с точками ?
прально N + Дубль = N+2
ну а дальше
цикл
Код:
for i:=1 to n do
        count:=count+(n+2)*i;
я думаю обьяснять не стоит
BDA,
ну там тип нужен поздоровее
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 29.10.2012, 20:27   #22
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Спасибо за разъяснения

Последний раз редактировалось Poma][a; 29.10.2012 в 20:33.
Poma][a вне форума Ответить с цитированием
Старый 29.10.2012, 20:31   #23
Саша........
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 14
По умолчанию

Вот Poma][a пишет что просто нужно сложить все каменюшки)а другие про закономерности про то что сколько раз повторяется и т д.просто сложить все точечки это я понимаю,а закономерности какую роль играют?)
Саша........ вне форума Ответить с цитированием
Старый 29.10.2012, 20:33   #24
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
0328 Pascal Accepted 0,296 960 Кб
что и требовалось в принципе
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 29.10.2012, 20:33   #25
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Саша........, методом "просто сложить" можно решать простые задачки, а когда числа большие, нужно выводить простые формулы.
Mad_Cat,
Цитата:
0328 Pascal Accepted 0,276 960 Кб
- забавно, что элегантная формула всего лишь на 0,02 секунды быстрее.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 29.10.2012 в 20:39.
BDA вне форума Ответить с цитированием
Старый 29.10.2012, 20:34   #26
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Вот и у Ромахи и не работает) Тем более нашли кого слушать
Закономерности помогут Вам найти формулу и не париться с циклами...
Poma][a вне форума Ответить с цитированием
Старый 29.10.2012, 20:41   #27
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Сообщение от Саша........ Посмотреть сообщение
Вот Poma][a пишет что просто нужно сложить все каменюшки)а другие про закономерности про то что сколько раз повторяется и т д.просто сложить все точечки это я понимаю,а закономерности какую роль играют?)
Фокус в том, что на самом деле для получения ответа не нужны циклы, комбинации и тому подобное.

Смотрите: для обычного домино (N=6) каждый набор точек встречается 8 раз. Скажем, 5 точек встречаются по разу на шести костях с 0, 1, 2, 3, 4 и 6 и два раза - на дубле 5-5.
Теперь выкинем все кости с шестёрками. Получим случай N=5, и любой набор точек m, 0<=m<=5 будет встречаться 7 раз (потому что мы выкинули m-6).

То есть, ответ на заданный мной вопрос - половинка с m точками в наборе будет встречаться N+2 раза. Всегда. N раз приходятся на пары вида 0-m, 1-m, ..., N-m (за вычетом самой m-m) и ещё два раза - на дубль.

А сколько точек на всех половинках с m точками? (N+2)*m, естественно. А сколько всего точек? (N+2)*0 + (N+2)*1 + (N+2)*2 + ... + (N+2)*N = (N+2)*(0+1+2+...+N). Но сумма всех натуральных чисел от 0 до N, как известно, равна N*(N+1)/2.

Всего потребуется N*(N+1)*(N+2)/2 бриллиантов. Осталось написать программу, вычисляющую это выражение. Честное слово, она будет работать очень быстро

Код:
unsigned long CountDominoDots(unsigned N) {return ((unsigned long)N)*(N+1)*(N+2)/2};
Abstraction вне форума Ответить с цитированием
Старый 29.10.2012, 20:47   #28
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Огромное спасибо всем.
Ток мне не дает покоя вопрос, почему так не проходит :
Код:
for i := 0 to n do 
    for j := i to n do
        count := count + j + i;
Согласен 2 цикла перебор, но как заявлял администратор и другие посетители acmp. 2 цикла работают... странно...
Poma][a вне форума Ответить с цитированием
Старый 29.10.2012, 21:02   #29
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Poma][a, действительно странно.
Еще забавный способ решения - в лоб.
Но все равно 0,279 секунд 980 Кб.
Код во вложении (решение-шутка)
Вложения
Тип файла: txt домино-брут.txt (118.5 Кб, 155 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 29.10.2012, 21:04   #30
Саша........
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 14
По умолчанию

Всем огромное преогромное спасибо за помощь!!)Думаю теперь точно разберусь)
Саша........ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
комбинаторика Rahmatillo C++ Builder 1 26.04.2012 01:10
Комбинаторика Dima170792 Помощь студентам 8 20.04.2011 00:01
Комбинаторика kiborrgg Помощь студентам 6 25.03.2011 15:50
Комбинаторика MadReason Помощь студентам 4 09.12.2010 22:52