Cod sursa(job #3251364)

Utilizator brianabucur11Briana Bucur brianabucur11 Data 25 octombrie 2024 20:34:41
Problema Pascal Scor 40
Compilator cpp-64 Status done
Runda cex_1 Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("pascal.in");
ofstream fout ("pascal.out");

const int NMAX=1e3;
int n, d, v[NMAX][NMAX];

void sum (int x)
{
    int i=1, t=0;
    while (i<=v[x][0] || i<=v[x-1][0] || t)
    {
        t+=v[x][i]+v[x-1][i];
        v[x][i]=t%10;
        t/=10;
        i++;
    }
    v[x][0]=i-1;
}

void pascal (int n)
{
    v[0][0]=v[0][1]=1;
    for (int i=1; i<=n; i++)
    {
        v[0][0]=v[0][1]=1;
        v[i][0]=v[i][1]=1;
        for (int j=i-1; j>=1; j--)
            sum(j);
    }
}

bool verif (int x, int b)
{
    int i=v[x][0], r=0;
    while (i)
    {
        r=r*10+v[x][i];
        v[x][i]=r/b;
        r%=b;
        i--;
    }
    if (r==0)
        return true;
    return false;
}

void solve ()
{
    int nr=0;
    for (int i=0; i<=n; i++)
    {
        if (verif(i,d))
            nr++;
    }
    fout << nr;
}

int main()
{
    fin >> n >> d;
    pascal(n);
    solve();
    return 0;
}