Страница 1 из 1

Помогите с дискреткой

СообщениеДобавлено: 14 мар 2006 19:40
Trampoline
помогите плиз решить насколько задач по комбинаторике


1. В чемпионате России по футболу участвуют 16 команд. Сколькими способами можно распределить золотые, серебряные и бронзовые медали ?
2. Сколькими способами можно переставить буквы в слове «программирование» так, чтобы первое, третье и десятое места были заняты согласными буквами ?
3. Сколькими способами можно раскрасить вершины куба в два цвета так, чтобы вершин каждого цвета было поровну?
4. Сколько последовательностей из k нулей и n единиц обладают следующим свойством: перед каждой позицией последовательности число единиц не меньше числа нулей ?
5. Сколькими способами можно рассадить за столом 6 супружеских пар так, чтобы мужчины и женщины чередовались и никакие два супруга не сидели рядом ?
6. Сколько существует неотрицательных целых чисел меньших 1 000 000, цифры которых расположены в невозрастающем порядке?
7. Найти производящую функцию a(t) для последовательности {An};, где An есть
число решений уравнения 2x +3y +5z = n при условии, что x, y, z принимают
значения 0 или 1.
8. Найти асимптотическое (при n => бесконечности) поведение An, заданного следующими
рекуррентным уравнением и начальными условиями
An+1 = (An + b/ An)/2, Ao > 0, b > 0.

СообщениеДобавлено: 15 мар 2006 22:00
Trampoline
1, 2, 3, 5 решил сам, помогите плиз решить остальные

СообщениеДобавлено: 15 мар 2006 22:08
HaKyp
Пардон, гды ты это достал ?))

СообщениеДобавлено: 15 мар 2006 22:17
Trampoline
мне в инсте это срочняк надо, препод болеет, книг в библиотеке нету, видимо поэтому на дом и задали, помогите плиззз

СообщениеДобавлено: 15 мар 2006 22:22
HaKyp
Извини , но ничем помочь не могу (( Кто там у нас учится в ВУЗах ?

СообщениеДобавлено: 16 мар 2006 00:32
Trampoline
решите плиз только эти две задачи:
4. Сколько последовательностей из k нулей и n единиц обладают следующим свойством: перед каждой позицией последовательности число единиц не меньше числа нулей ?
6. Сколько существует неотрицательных целых чисел меньших 1 000 000, цифры которых расположены в невозрастающем порядке?(я решил, и у меня получилось (10+9+8+7+6+5+4+3+2+1)*1000+7 , но я сомневаюсь).

СообщениеДобавлено: 17 мар 2006 00:32
NitroCerber
Trampoline писал(а):6. Сколько существует неотрицательных целых чисел меньших 1 000 000, цифры которых расположены в невозрастающем порядке?(я решил, и у меня получилось (10+9+8+7+6+5+4+3+2+1)*1000+7 , но я сомневаюсь).


в этой задачке ответ 5005

у тебя 55007.. многовато

СообщениеДобавлено: 19 мар 2006 10:48
Trampoline
NitroCerber писал(а):в этой задачке ответ 5005


решение можешь написать?

СообщениеДобавлено: 19 мар 2006 19:13
NitroCerber
к сожалению решения я не знаю.. в комбинаторике я полный ноль. но написать прогу, которая считает количество таких чисел достаточно просто ;)

СообщениеДобавлено: 19 мар 2006 19:16
Trampoline
так это точно правельный ответ?

СообщениеДобавлено: 19 мар 2006 19:20
Trampoline
этих чисел больше должно быть, ведь из 99 например, таких чисел 63

СообщениеДобавлено: 19 мар 2006 20:16
NitroCerber
#include<stdio.h>

int main(void)
{
int i,j,x, t;
int s[6];
int counter = 0;
char y;

for(i = 0; i < 1000000; i++){
x = i;
for(j = 5; j >= 0; j--){
s[j] = x % 10;
x = x / 10;
}
for(j = 0; j < 6; j++){
printf("%d", s[j]);
}
t = 0;
for(j = 0; j < 5; j++){
if (s[j]>s[j+1]){
t = 1;
break;
}
}
if (t == 0) counter++;
printf("\n");
}

printf("result = %d", counter);
while((y = getchar()) != EOF){}

}

вроде я проверял то что требовалось... хотя мож и налагал где

СообщениеДобавлено: 20 мар 2006 01:08
petrovi4
NitroCerber ты знак перепутал "if (s[j]>s[j+1]){", т.е. у тебя "если текущая цифра больше следующей"
а должно быть "if (s[j]<s[j+1]){", т.е. "если текущая цифра меньше следующей"
там же нужно количество чисел, цифры которых расположены в невозрастающем порядке.
т.е. если следующая цифра больше предыдущей, то не число не катит.

СообщениеДобавлено: 20 мар 2006 01:17
NitroCerber
тьфу млин. во я лоханулсо. надо читать внимательнее.. я решил что неубывающая она :lol:
теперь ещё и ведущие нули отрезать надо...

СообщениеДобавлено: 20 мар 2006 01:19
petrovi4
#!/usr/bin/python
counter = 0
for i in range (0, 100):
word = str (i)
if len (word) == 1:
#print "Found %s" % word
counter += 1
continue
#print "Testing %s" % word
for j in range (1, len (word)):
if int (word[j - 1]) > int (word[j]):
break
if j == len (word) - 1:
counter += 1
print "Found %s" % word
print counter