Форум программистов, компьютерный форум, киберфорум
Комбинаторика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/81: Рейтинг темы: голосов - 81, средняя оценка - 4.53
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169

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

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

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

И подскажите как это можно решить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2012, 14:06
Ответы с готовыми решениями:

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

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

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

9
1 / 1 / 3
Регистрация: 26.11.2011
Сообщений: 169
17.05.2012, 00:59  [ТС]
Вверх
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
22.05.2012, 01:05
Насчёт первого набора: знающие люди говорят, что можно решить в лоб (программой). Если решать теорией, получается гемор..
Вот, для примера, прога, выводит все числа в лог. Дубоватое, но рабочее решение) Ответ: 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
Цитата Сообщение от 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
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
27.05.2012, 16:37
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. Проверял, числа вроде все валидные. Лог прикрепляю.
Вложения
Тип файла: log numbers.log (9.2 Кб, 71 просмотров)
1
2 / 2 / 0
Регистрация: 12.04.2012
Сообщений: 5
27.05.2012, 20:53
Наверно самый простой и самый нецелесообразный способ.
Можно посчитать количество перестановок для каждого случая, когда 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
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от #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
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
30.05.2012, 21:10
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;
}
/* -------------------------------------------------------------------------- */
Вложения
Тип файла: log numbers.log (10.9 Кб, 24 просмотров)
0
 Аватар для Fylhtq1997
110 / 33 / 4
Регистрация: 31.03.2012
Сообщений: 81
30.05.2012, 22:38
Спасибо. Так нужно alex9910 ему высылать или нет?
0
 Аватар для Fylhtq1997
110 / 33 / 4
Регистрация: 31.03.2012
Сообщений: 81
02.06.2012, 17:38
Цитата Сообщение от 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);


https://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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2012, 17:38
Помогаю со студенческими работами здесь

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

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

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

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

Сколько различных 10-значных чисел можно получить, используя цифры 1 и 2?
Сколько различных десятизначных чисел можно написать, используя цифры 1 и 2?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru