Форум программистов, компьютерный форум, киберфорум
Наши страницы
Комбинаторика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/59: Рейтинг темы: голосов - 59, средняя оценка - 4.83
alex9910
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 167
1

Сколько четырех значных чисел можно образовать?

13.05.2012, 14:06. Просмотров 11073. Ответов 9
Метки нет (Все метки)

Сколько четырех значных чисел можно образовать из цифр 1111223345670 и 11112345670000?

И подскажите как это можно решить?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 14:06
Ответы с готовыми решениями:

Сколько шестизначных чисел можно образовать
Сколько шестизначных чисел можно образовать из цифр 0,1,2,3…,9, если ни одна цифра не повторяется,...

Сколько различных чисел можно образовать
Сколько различных чисел можно образовать из цифр 0,7,2,5,8, если цифры в числе не повторяются

Сколько различных 7 значных чисел можно записать из 4 чисел
Даны числа 2, 3, 5, 6, сколько 7 значных чисел из них можно составить?

Сколько n(10)- значных чисел можно составить из k(5) цифр
Определить, сколько n(10)- значных чисел можно составить из k(5) цифр(этот пункт вроде решил,...

Сколько 6-значных чисел можно составить из цифр {1…7}?
Сколько 6-значных чисел, у которых произведение цифр чётно, можно составить из цифр {1…7}? Цифры...

9
alex9910
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 167
17.05.2012, 00:59  [ТС] 2
Вверх
0
#pragma
Временно недоступен
955 / 226 / 14
Регистрация: 12.04.2009
Сообщений: 926
22.05.2012, 01:05 3
Насчёт первого набора: знающие люди говорят, что можно решить в лоб (программой). Если решать теорией, получается гемор..
Вот, для примера, прога, выводит все числа в лог. Дубоватое, но рабочее решение) Ответ: 2246
пример программы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* -------------------------------------------------------------------------- */
#include <iostream>
#include <map>
#include <fstream>
/* -------------------------------------------------------------------------- */
int main()
{
   std::ofstream file;
 
   int           digits[10] = {1,2,3,4,5,6,7,8,9,0};
   int      digit_flags[10] = {0,0,0,0,0,0,0,0,0,0};
 
   int   count              = 0;
   int   four_digits_number = 1000;
   int   temp_number;
 
   std::map <int, int> numbers;
 
   file.open("numbers.log", std::ofstream::out );
 
   if (!file.is_open()) {
      std::cerr << "Error opening a file" << std::endl;
      return 1;
   }
 
   for ( ; four_digits_number <= 7654; ++four_digits_number ) {
 
      temp_number = four_digits_number;
 
      for ( int j = 0; j < 10; ++j ) {
 
         for ( int i = 0; i <= 4; ++i ) {
 
            if ((digits[j] ^ (temp_number % 10)) == 0) {
 
               digit_flags[j] += 1;
            }
            temp_number /= 10;
         }
 
         temp_number = four_digits_number;
      }
 
 
      if ( digit_flags[0] <= 4 && digit_flags[1] <= 4 &&
           digit_flags[2] <= 2 && digit_flags[3] <= 1 &&
           digit_flags[4] <= 1 && digit_flags[5] <= 1 &&
           digit_flags[6] <= 1 && digit_flags[7] == 0 &&
           digit_flags[8] == 0 && digit_flags[9] <= 2   ) {
 
         numbers[++count] = four_digits_number;
         file << four_digits_number << std::endl;
      }
 
      digit_flags = {0,0,0,0,0,0,0,0,0,0};
   }
 
   file << std::endl
        << "Total amount of numbers: "
        << numbers.size()
        << std::endl;
 
   return 0;
}
/* -------------------------------------------------------------------------- */


Добавлено через 5 часов 50 минут
p.S. Там по ошибке сделано с набором 111122223345670, но суть та же ))
0
Fylhtq1997
110 / 33 / 4
Регистрация: 31.03.2012
Сообщений: 81
27.05.2012, 04:22 4
Цитата Сообщение от alex9910 Посмотреть сообщение
Сколько четырех значных чисел можно образовать из цифр 1111223345670 и 11112345670000?

И подскажите как это можно решить?
Сколько четырехзначных чисел можно образовать из цифр и 11112345670000?

Так любое сочетание можно рассматривать, как – взаимосвязь множеств и подмножеств и их элементов друг с другом, то:.
разобьём данную задачу на несколько этапов:
A-множество из цифр 1111;B-множество 234567;C- множество 0000.
1)- четырехзначных чисел в множестве A можно образовать 1- н способ.
2)- четырехзначных чисел в множестве C можно образовать 0 способов.
3)- четырехзначных чисел в множестве B можно образовать P4=6•5•4•3=360 способов.
4)- далее рассматриваем следующий набор цифр 111234567000
а) P4(111)C61+ C31=(4!/3!) • 6+3=4•6+3=27
б)P4(11) •(C62+ C61)+ C61C31+ C32=(4!/2!) •(15+6) •6•3+3=12•21+6•3+3=273
5)- рассматриваем следующий набор цифр 12345670
P4=7•7•6•5=1470 способов
6)- рассматриваем набор цифр 1000
P1C31/3=1•3/3=1 способ, и так получаем следующее число комбинаций:
1+360+27+273+1470+1=2132 способа.
Ответ: 2132 способа
Так по крайней мере получилось у меня.
1
#pragma
Временно недоступен
955 / 226 / 14
Регистрация: 12.04.2009
Сообщений: 926
27.05.2012, 16:37 5
Fylhtq1997, у Вас где-то ошибка. Вот листинг программы:
source
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/* -------------------------------------------------------------------------- */
#include <iostream>
#include <map>
#include <fstream>
/* -------------------------------------------------------------------------- */
int main()
{
   std::ofstream file;
   std::map <int, int> numbers;
 
   int           digits[10] = {1,2,3,4,5,6,7,8,9,0};
   int      digit_flags[10] = {0,0,0,0,0,0,0,0,0,0};
   int   count              = 0;
   int   four_digits_number = 1000;
   int   temp_number;
 
   file.open("numbers.log", std::ofstream::out );
 
   if (!file.is_open()) {
      std::cerr << "Error opening a file" << std::endl;
      return 1;
   }
 
   for ( ; four_digits_number <= 7654; ++four_digits_number ) {
 
      temp_number = four_digits_number;
 
      for ( int j = 0; j < 10; ++j ) {
 
         for ( int i = 0; i <= 4; ++i ) {
 
            if ((digits[j] ^ (temp_number % 10)) == 0) {
 
               digit_flags[j] += 1;
            }
            temp_number /= 10;
         }
 
         temp_number = four_digits_number;
      }
 
 
      if ( digit_flags[0] <= 4 && digit_flags[1] <= 1 &&
           digit_flags[2] <= 1 && digit_flags[3] <= 1 &&
           digit_flags[4] <= 1 && digit_flags[5] <= 1 &&
           digit_flags[6] <= 1 && digit_flags[7] == 0 &&
           digit_flags[8] == 0 && digit_flags[9] <= 4   ) {
 
         numbers[++count] = four_digits_number;
         file << four_digits_number << std::endl;
      }
 
      digit_flags = {0,0,0,0,0,0,0,0,0,0};
   }
 
   file << std::endl
        << "Total amount of numbers: "
        << numbers.size()
        << std::endl;
 
   return 0;
}
/* -------------------------------------------------------------------------- */


Ответ: 1868. Проверял, числа вроде все валидные. Лог прикрепляю.
1
Вложения
Тип файла: log numbers.log (9.2 Кб, 66 просмотров)
Pruff
2 / 2 / 0
Регистрация: 12.04.2012
Сообщений: 5
27.05.2012, 20:53 6
Наверно самый простой и самый нецелесообразный способ.
Можно посчитать количество перестановок для каждого случая, когда 0 или 1 занимает ту или иную позицию в числе и сложить.
Например если число только из нулей и единиц, то перестановок 2^3.
Если на одной из трех последних позиций стоит не 0 или 1, то 2^2*6*3, если и на первой, то 6*2^3.
Если на двух из трех последних позиций стоит не 0 или 1, то 6*5*3*2, если первую, то 6*5*3*2^2.
И так далее, пока не дойдем до случая, где на всех позициях не стоят 0 или 1.
В итоге получается примерно так: 2^3+2^2*6*3+6*2^3+6*5*3*2+6*5*3*2^2+6*5*4+6*5*4*3*2+6*5*4*3 = 1868
2
Fylhtq1997
110 / 33 / 4
Регистрация: 31.03.2012
Сообщений: 81
30.05.2012, 20:32 7
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от #pragma Посмотреть сообщение
Fylhtq1997, у Вас где-то ошибка.
Ответ: 1868. Проверял, числа вроде все валидные. Лог прикрепляю.
Да Вы правы, есть ошибки, одну сразу определил, над другой надо подумать как её правильно разрешить.Обязательно добью эту задачку! Спасибо.

Добавлено через 13 часов 15 минут
Цитата Сообщение от #pragma Посмотреть сообщение
Fylhtq1997, у Вас где-то ошибка. Вот листинг программы:

Ответ: 1868. Проверял, числа вроде все валидные. Лог прикрепляю.

Сколько четырехзначных чисел можно образовать из цифр и 11112345670000?
Так любое сочетание можно рассматривать, как – взаимосвязь множеств и подмножеств и их элементов друг с другом, то:.
разобьём данную задачу на несколько этапов:
A-множество из цифр 1111;B-множество 234567;C- множество 0000.
1)- четырехзначных чисел в множестве A можно составить число вариантов A44=1 способ.

2)- четырехзначных чисел в множестве C число вариантов 0 способов.

3)- число вариантов размещения элементов множеств C и A в четырехзначные числа составит по формулам: сочетание набор цифр (1110) C31=3 комбинации, и (1100) перестановки с повторением P4(11,00)=(4!/2! •2!)/2=3 комбинации, и (0001) C44=1 комбинация.

4)-число вариантов четырехзначных чисел в множестве B составит P4=6•5•4•3=360 комбинаций.

5)- далее рассмотрим перестановки с повторениями элементов множеств A, множества B и 0, х- элемент множества B.
а)- перестановки с повторением (P4(111,х)= 4!/3!)•(C61=6)=4•6=24 комбинации
б)- перестановки с повторением (P4(11,хх)= 4!/2!)•(C62=15)=12•15=180 комбинаций
в)- перестановки с повторением (P4(11,0,х)= (4!/2!)-3)•(C61=6)=9•6=54 комбинаций

6)- далее рассмотрим перестановки с повторениями элементов множеств C, множества B и 1, х- элемент множества B
а)- перестановки с повторением (P4(000,х)= (4!/3!/)4)•(C61=6)=1•6=6 комбинации
б)- перестановки с повторением (P4(00,хх)= (4!/2!)/2)•(C62=15)=6•15=90 комбинаций
в)- перестановки с повторением (P4(00,1,х)= (4!/2!)/2)•(C61=6)=6•6=36 комбинаций

7)- рассматриваем следующий набор цифр 12345670 P4=7•7•6•5=1470 комбинаций.
Следовательно получаем следующее число комбинаций:
1+3+3+1+24+180+54+6+90+36+1470-360=1868 способ0в.
Ответ: 1868 способа

Добавлено через 23 часа 35 минут
Цитата Сообщение от #pragma Посмотреть сообщение
Насчёт первого набора: знающие люди говорят, что можно решить в лоб (программой). Если решать теорией, получается гемор..
Вот, для примера, прога, выводит все числа в лог. Дубоватое, но рабочее решение) Ответ: 2246
[SPOILER="пример программы"]
p.S. Там по ошибке сделано с набором 111122223345670, но суть та же ))
Здравствуйте!

Сколько четырехзначных чисел можно образовать из цифр 1111223345670. Ответ: 2246.
Не могу дотянуть до 2246. У меня 2218, подумаю ещё.
Спасибо. С уважением
1
#pragma
Временно недоступен
955 / 226 / 14
Регистрация: 12.04.2009
Сообщений: 926
30.05.2012, 21:10 8
Fylhtq1997, я написал в P.S., что по ошибке сначала сделал с другим набором. Я делал с набором 111122223345670 вместо 1111223345670. Сейчас поменял набор, у Вас правильный ответ! (2218)
набор 1111223345670
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/* -------------------------------------------------------------------------- */
#include <iostream>
#include <map>
#include <fstream>
/* -------------------------------------------------------------------------- */
int main()
{
   std::ofstream file;
   std::map <int, int> numbers;
 
   int           digits[10] = {1,2,3,4,5,6,7,8,9,0};
   int      digit_flags[10] = {0,0,0,0,0,0,0,0,0,0};
   int   count              = 0;
   int   four_digits_number = 1000;
   int   temp_number;
 
   file.open("numbers.log", std::ofstream::out );
 
   if (!file.is_open()) {
      std::cerr << "Error opening a file" << std::endl;
      return 1;
   }
 
   for ( ; four_digits_number <= 7654; ++four_digits_number ) {
 
      temp_number = four_digits_number;
 
      for ( int j = 0; j < 10; ++j ) {
 
         for ( int i = 0; i <= 4; ++i ) {
 
            if ((digits[j] ^ (temp_number % 10)) == 0) {
 
               digit_flags[j] += 1;
            }
            temp_number /= 10;
         }
 
         temp_number = four_digits_number;
      }
 
 
      if ( digit_flags[0] <= 4 && digit_flags[1] <= 2 &&
           digit_flags[2] <= 2 && digit_flags[3] <= 1 &&
           digit_flags[4] <= 1 && digit_flags[5] <= 1 &&
           digit_flags[6] <= 1 && digit_flags[7] == 0 &&
           digit_flags[8] == 0 && digit_flags[9] <= 2   ) {
 
         numbers[++count] = four_digits_number;
         file << four_digits_number << std::endl;
      }
 
      digit_flags = {0,0,0,0,0,0,0,0,0,0};
   }
 
   file << std::endl
        << "Total amount of numbers: "
        << numbers.size()
        << std::endl;
 
   return 0;
}
/* -------------------------------------------------------------------------- */
0
Вложения
Тип файла: log numbers.log (10.9 Кб, 24 просмотров)
Fylhtq1997
110 / 33 / 4
Регистрация: 31.03.2012
Сообщений: 81
30.05.2012, 22:38 9
Спасибо. Так нужно alex9910 ему высылать или нет?
0
Fylhtq1997
110 / 33 / 4
Регистрация: 31.03.2012
Сообщений: 81
02.06.2012, 17:38 10
Цитата Сообщение от alex9910 Посмотреть сообщение
Сколько четырех значных чисел можно образовать из цифр 1111223345670?
И подскажите как это можно решить?
Заданный ряд цифр преобразуем в следующие ряды цифр, для удобства решения и наглядности, поставленной задачи:
B (2,3,4,5,6,7); D (1,3,4,5,6,7); C (1,2,4,5,6,7); E (1,2,3,4,5,6,7);


http://www.cyberforum.ru/cgi-bin/latex.cgi?\bar{P}_4_(_1_1_1_1_)+(\bar{P}_4_(_1_1_1_0_)-1)+\bar{P}_4_(_1_1_1_b_)*C_6^1+(\bar{P}_4_(_1_1_0_b_)-3)*C_6^1+<br />
\bar{P}_4_(_1_1_b_b_)*C_6^2+\bar{P}_4_(_1_1_2_2_)+\bar{P}_4_(_1_1_3_3_)+\bar{P}_4_(_3_3_2_2_)+\bar{P}_4_(_1_1_d_d_)*C_6^2+<br />
(\bar{P}_4_(_2_2_0_d_)-3)*C_6^1+(\bar{P}_4_(_3_3_0_c_)-3)*C_6^1+\bar{P}_4_(_3_3_c_c_)*C_6^2+P_4_(_E_)=2218

Удачи.
0
02.06.2012, 17:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2012, 17:38

Сколько шестизначных чисел можно образовать, не используя нуля
Сколько шестизначных чисел можно образовать, не используя нуля, если каждое число должно состоять...

Сколько 5-значных чисел , кратных трём, можно составить из цифр 2 и 7?
Сколько 5 значных чисел , кратных трём можно составить из чисел 2 и 7

Сколько чисел можно образовать из цифр 0,2,4,8, если цифры повторяются\не повторяются?
Сколько чисел можно образовать из цифр 0,2,4,8, если цифры повторяются\не повторяются?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru