Cod sursa(job #1520517)

Utilizator dragos99Homner Dragos dragos99 Data 8 noiembrie 2015 21:57:41
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<fstream>
using namespace std;
long a,b,c,r,d,nr;
int d2[5000000],d3[5000000],d5[5000000];
void fac()
{
    long aux;
    for(long i=2;i<=r;i++)
    {
        aux=i;
        d2[i]=d2[i-1];
        d3[i]=d3[i-1];
        d5[i]=d5[i-1];
        while(aux%2==0 && aux>0)
        {
            d2[i]++;
            aux/=2;
        }
        while(aux%3==0 && aux>0)
        {
            d3[i]++;
            aux/=3;
        }
        while(aux%5==0 && aux>0)
        {
            d5[i]++;
            aux/=5;
        }
    }
}
long numar()
{
    long i;
    for(i=1;i<r/2;i++)
    {
        if(d2[r]-d2[i]-d2[r-i]>=a && d3[r]-d3[i]-d3[r-i]>=b && d5[r]-d5[i]-d5[r-i]>=c)
            nr++;
    }
    nr*=2;
    if(r%2==0)
    {
        if(d2[r]-2*d2[r/2]>=a && d3[r]-2*d3[r/2]>=b && d5[r]-2*d5[r/2]>=c)
            nr++;
    }
    return nr;
}
int main()
{
    ifstream f("pascal.in");
    ofstream g("pascal.out");
f>>r>>d;
fac();
switch(d) {
case 2:
    a=1;
    break;
case 3:
    b=1;
    break;
case 4:
    a=2;
    break;
case 5:
    c=1;
    break;
case 6:
    a=1;
    b=1;
    break;
}
g<<numar();
return 0;
}