Cod sursa(job #1308719)

Utilizator cristian.caldareaCaldarea Cristian Daniel cristian.caldarea Data 4 ianuarie 2015 16:24:44
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int Dim = 5000001;

int r, d, s2, s3, s5, nr;
int x2[Dim], x3[Dim], x5[Dim];

int main()
{
    fin >> r >> d;
    if ( r == 0)
    {
        fout << 0;
        return 0;
    }
    for ( int i = 2, j; i <= r; ++i)
    {

        x2[i] = x2[i-1];
        x3[i] = x3[i-1];
        x5[i] = x5[i-1];
        j = i;
        if ( i % 2 == 0)
            while( j % 2 == 0)
            {
                j = j / 2;
                x2[i] += 1;
            }
        j = i;
        if ( i % 3 == 0)
            while( j % 3 == 0)
            {
                j = j / 3;
                x3[i] += 1;
            }
        j = i;
        if ( i % 5 == 0)
            while( j % 5 == 0)
            {
                j = j / 5;
                x5[i] += 1;
            }
    }
    for ( int i = 0; i <= r; ++i)
    {

        s2 = x2[r] - x2[r-i] - x2[i];
        s3 = x3[r] - x3[r-i] - x3[i];
        s5 = x5[r] - x5[r-i] - x5[i];

        if ( d == 2 && s2 >= 1 )
            nr++;

        if( d == 3 && s3 >= 1)
            nr++;

        if( d == 5 && s5 >= 1)
            nr++;

        if( d == 4 && s2 >= 2)
            nr++;

        if( d == 6 && s2 >= 1 && s3 >= 1)
            nr++;
    }
    fout << nr;
    return 0;
}