Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 80, средняя оценка - 4.84
paxak93
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 28
#1

Сколько различных натуральных чисел можно составить из цифр 0, 1, 2, 3, 4, 5, - C++

10.06.2012, 10:26. Просмотров 9939. Ответов 13
Метки нет (Все метки)

Сколько различных натуральных чисел можно составить из цифр 0, 1, 2, 3, 4, 5,
если каждая цифра входит не более одного раза
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 10:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сколько различных натуральных чисел можно составить из цифр 0, 1, 2, 3, 4, 5, (C++):

Множества: дано N натуральных чисел. Сколько различных цифр встречается в его десятичной записи? - C++
Помогите написать порограу на с++ с множиствами. Дано N натуральных чисел.Для каждого введёного числа определить количество различных...

Найти сколько различных трехзначных чисел можно получить из заданного числа n путем вычеркивания цифр - C++
Задача: найти сколько различных трехзначных чисел можно получить из заданного числа n путем вычеркивания цифр? Я придумал такое: ...

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

Сколько различных ожерелий можно составить из 2-ух белых, 2-ух синих и 2-ух красных бусин? - C++
Доброго времени суток помогите написать программу Сколько различных ожерелий можно составить из 2-ух белых, 2-ух синих и 2-ух красных...

Задача на рекурсию. Сколько существует k-значных натуральных чисел, сумма цифр которых равна s - C++
Задание (нужно выполнять рекурсией): Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма...

Сколько цифр можно составить из заданных букв? - C++
Дана последовательность из букв. Найти сколько цифр можно составить из этих букв, вывести их и то, что осталось невостребованным. ...

13
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 11:37 #2
Это сумма перестановок
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.06.2012, 11:43 #3
вроде как 6!
Или там можно не только шестизначные?
Тогда сочетания
1
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 11:48 #4
Цитата Сообщение от Jtalk Посмотреть сообщение
Это сумма перестановок
Цитата Сообщение от diagon Посмотреть сообщение
вроде как 6!
Или там можно не только шестизначные?
Тогда сочетания
Неправда, это сумма размещений
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.06.2012, 11:55 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int factorial(int x)
{
    return x ? factorial(x - 1) * x : 1;
}
 
int main()
{
    const int n = 6;
    
    int ans = 0;
    
    for (int i = 1; i <= 6; ++i)
        ans += factorial(n) / factorial(n - i);
        
    std::cout << ans;
}
1
paxak93
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 28
10.06.2012, 12:23  [ТС] #6
Цитата Сообщение от diagon Посмотреть сообщение
вроде как 6!
Или там можно не только шестизначные?
Тогда сочетания
можно и однозначные, и ноль тоже считается.
0
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
10.06.2012, 12:34 #7
Цитата Сообщение от paxak93 Посмотреть сообщение
можно и однозначные, и ноль тоже считается.
Только 0 не должен быть первой цифрой
1
paxak93
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 28
10.06.2012, 12:42  [ТС] #8
Цитата Сообщение от diagon Посмотреть сообщение
вроде как 6!
Или там можно не только шестизначные?
Тогда сочетания
Цитата Сообщение от g-h Посмотреть сообщение
Только 0 не должен быть первой цифрой
Ну да
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.06.2012, 12:46 #9
Цитата Сообщение от g-h Посмотреть сообщение
Только 0 не должен быть первой цифрой
Черт, это я не учел. При таких ограничениях можно брутфорсом решить. Либо вывести комбинаторную формулу(стандартные здесь не работают).
1
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 12:50 #10
Что там выводить-то? Это сумма разностей перестановок из 6 по i и из 5 по i-1 для i : 1 .. 6.
1
paxak93
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 28
10.06.2012, 12:57  [ТС] #11
и все таки каков правильный ответ?

Добавлено через 2 минуты
Цитата Сообщение от Jtalk Посмотреть сообщение
Неправда, это сумма размещений
это размещение без повторений.
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.06.2012, 13:17 #12
Эх, забыл я комбинаторику.
Ответ - 1631

Добавлено через 7 минут
Если что, считал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int factorial(int x)
{
    return x ? factorial(x - 1) * x : 1;
}
 
int main()
{
    const int n = 6;
    
    int ans = 0;
    
    for (int i = 1; i <= 6; ++i)
    {
        ans += factorial(n) / factorial(n - i);
        
        if ( i > 1 )
            ans -= ( factorial(n) / factorial(n - i) ) / 6;
    }
        
    std::cout << ans; //1631
}
1
paxak93
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 28
10.06.2012, 13:18  [ТС] #13
Цитата Сообщение от diagon Посмотреть сообщение
Эх, забыл я комбинаторику.
Ответ - 1631
у решил и у меня 1630 а от куда еще единица взялась?
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.06.2012, 13:20 #14
Цитата Сообщение от paxak93 Посмотреть сообщение
у решил и у меня 1630 а от куда еще единица взялась?
Не знаю, может, вы 0 не учитываете.
Я брутфорсом свое решение проверил:
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
#include <iostream>
 
bool is_correct(int x)
{
    int arr[10] = {};
    
    for (; x != 0; x /= 10)
        ++arr[x % 10];
        
    if ( arr[6] || arr[7] || arr[8] || arr[9] )
        return false;
        
    for (int i = 0; i <= 6; ++i)
        if (arr[i] > 1)
            return false;
            
    return true;    
}
 
int main()
{   
    int c = 0;
    for (int i = 0; i < int(1e7); ++i)
        c += is_correct(i);
        
    std::cout << c; //1631
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 13:20
Привет! Вот еще темы с ответами:

Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма цифр которых равна d. - C++
Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма цифр которых равна d. Запись натурального...

Составить программу подсчета числа всех натуральных чисел, меньших M, квадрат суммы цифр которых равен X. - C++
Составить программу подсчета числа всех натуральных чисел, меньших M, квадрат суммы цифр которых равен X.

Подсчитать сколько треугольников можно составить из чисел - C++
помогите,ребят 1)дан одномерный массив Х,состоящий из 20 целых чисел.Составить программу,которая подсчитывает сколько треугольников...

Из 8 различных цифр составить число, делящееся на любую из этих цифр - C++
Необходимо из 8 различных цифр составить число, делящееся на любую из этих цифр. Добавлено через 9 минут Не понимаю как сделать цикл...


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
10.06.2012, 13:20
Ответ Создать тему
Опции темы

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