Cod sursa(job #1523265)

Utilizator radu_uniculeu sunt radu radu_unicul Data 12 noiembrie 2015 15:37:22
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
using namespace std;
#define lacapat 1
#define nulacapat 0
int nr_cifre,baza,maimult0,maiputin0,sol1,sol2;
int nr0[20];
int dp[20][20][20];
///dp[lungimea_in_cifre][nr0consecutivi_maximi][nr0consecutivi_capat]
void bt();
int pow;
int main()
{
    freopen("zero.in","r",stdin);
    freopen("zero.out","w",stdout);
    scanf("%d %d %d %d",&nr_cifre,&baza,&maimult0,&maiputin0);
    dp[1][0][0]=baza-1;
    dp[1][1][1]=1;
    for(int i=2; i<=nr_cifre; i++)
    {
        ///punem nenule peste
        for(int j=1; j<baza; j++)
        {
            for(int k=1; k<=i; k++) dp[i][j][0]+=dp[i-1][j][k];
            dp[i][j][0]+=dp[i-1][j][0];
        }
        ///punem 0 peste
        for(int j=1; j<=i; ++j)
        {
            dp[i][j][1]=dp[i-1][j][0];
            for(int k=1; k<i; ++k) if(j==k) dp[i][j][k]+=dp[i-1][j-1][k-1];
                else dp[i][j][k]+=dp[i-1][j][k-1];
        }
    }
    for(int i=0; i<=maiputin0; ++i) sol1+=dp[nr_cifre][i][0];
    for(int i=0; i<=nr_cifre; ++i)
    {
        printf("\n");
        for(int j=0; j<=nr_cifre; ++j)
            printf("%d ",dp[i][j][0]);
    }
}