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

Определить количество раскрасок полоски из N клеток - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрица со статическим массивом http://www.cyberforum.ru/cpp-beginners/thread1137243.html
Собсна сделал матрицу по динамическому. Понятия не имею, как переделать её под статический. #include <iostream> #include <conio.h> #include <iostream> int main() {
C++ Работа с действительными числами. Условные операторы . Пользователь вводит действительное число. Требуется определить: 1. положительное это число или отрицательное 2. целое это число или нецелое; 3. четное это число или нечетное; Выбор варианта определяется пользователем. http://www.cyberforum.ru/cpp-beginners/thread1137240.html
Найти сумму корней C++
Пожалуйста помогите с программой. \sqrt{1+\sqrt{2+\sqrt{3+...\sqrt{50}}}}
C++ В произвольно заданной матрице найти мимнимум, произведения элементов всех столбцов, максимум произведений
В произвольно заданной матрицы найти наименьший элемент и вычислить произведения элементов всех столбцов, определить максимальный произведение с полученных произведений
C++ Действительная матрица n * m. Сортировать строки в порядке убывания значений первых элементов http://www.cyberforum.ru/cpp-beginners/thread1137209.html
Данная действительно матрица размером n * m. Сортировать (переставить) строки матрицы в порядке убывания значений первых элементов строк
C++ Два файла с символами: получить номер первого элемента, в котором эти файлы отличаются дано два файла с одинаковым количеством компонент, компонентами которого являются символы выяснить совпадают ли попарно их компоненты, если нет то получить номер первого элемента, в котором эти файлы отличаются. С++ подробнее

Показать сообщение отдельно
Brat_OK
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 20

Определить количество раскрасок полоски из N клеток - C++

02.04.2014, 18:58. Просмотров 170. Ответов 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
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
#include <iostream>
#include <cstdio>
#include <cassert>
#include <cmath>
 
using namespace std;
 
const int MOD = 1e9+7;
 
int fact(int n)
{
    if (n==0)
        return 1;
    if (n<0)
        return 0;
 
    long long f = 1;
 
    for(int i=2;i<=n;i++)
        f = (f*i)%MOD;
 
    return f;
}
 
long long CNK (int n, int k)
{
    return fact(n)/(fact(n-k)*fact(k));
}
 
long long ANK (int n, int k)
{
    return fact(n)/ (fact(n-k));
}
 
int main()
{
  int n,a,b,c,sum, ans, k=0;
 
  cin >> n >> a >> b >> c;
 
  sum = a+b+c;
 
  if (sum > n)
        {
            cout << 0;
            return 0;
        }
 
    if (a > 0)
        k++;
    if (b > 0)
        k++;
    if (c > 0)
        k++;
 
   ans = CNK(n,sum) * pow(3,n-sum) * fact(k);
 
   cout << ans;
 
}
Если нужно, могу объяснить идею моего решения.
Миниатюры
Определить количество раскрасок полоски из N клеток  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru