Cod sursa(job #1872022)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 7 februarie 2017 21:17:02
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>

using namespace std;

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

int v[5000002],w[5000002];
int r,d,sol,i,nr,ok,doi,trei;

int main()
{
    fin >> r >> d;
    if (d == 2 || d == 3 || d == 5)
    {
        for (i=1; i<=r; i++)
        {
            nr = i;
            while (nr%d == 0)
            {
                v[i]++;
                nr /= d;
            }
            v[i] += v[i-1];
        }
    }
    else
        if (d == 4)
        {
            for (i=1; i<=r; i++)
            {
                nr = i;
                while (nr%2 == 0)
                {
                    v[i]++;
                    nr /= 2;
                }
                v[i] += v[i-1];
            }
        }
        else
        {
            for (i=1; i<=r; i++)
            {
                nr = i;
                while (nr%2 == 0)
                {
                    v[i]++;
                    nr /= 2;
                }
                while (nr%3 == 0)
                {
                    w[i]++;
                    nr /= 3;
                }
                v[i] += v[i-1];
                w[i] += w[i-1];
            }
        }
    for (i=0; i<=r; i++)
    {
        if (d == 6 && v[r]-v[r-i]-v[i] > 0 && w[r]-w[r-i]-w[i] > 0)
            sol++;
        if (d == 4 && v[r]-v[r-i]-v[i] > 1)
            sol++;
        else
            if (d != 6 && d != 4 && v[r]-v[r-i]-v[i] > 0)
                sol++;
    }
    fout << sol;
    return 0;
}