Cod sursa(job #838563)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 19 decembrie 2012 22:32:49
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#define DN 5000005
using namespace std;

int p2[DN],p3[DN],p5[DN],r,d;

void calc()
{
    for(int i=1;i<=r;++i)
    {
        if(i%2==0)
            p2[i]=p2[i/2]+1;
        if(i%3==0)
            p3[i]=p3[i/3]+1;
        if(i%5==0)
            p5[i]=p5[i/5]+1;
    }
    for(int i=1;i<=r;++i)
    {
        p2[i]+=p2[i-1];
        p3[i]+=p3[i-1];
        p5[i]+=p5[i-1];
    }
}

int main()
{
    int rez=0;
    ifstream f("pascal.in");
    ofstream g("pascal.out");
    f>>r>>d;
    calc();
    int k=r+1;
    for(int j=1;j<=k/2;++j)
    {
         // pozitia j si linia r
        int a2=0,a3=0,a5=0;
        a2 = p2[r]-p2[r-j+1]-p2[r-j];
        a3 = p3[r]-p3[r-j+1]-p3[r-j];
        a5 = p5[r]-p5[r-j+1]-p5[r-j];
        if( ( d==2 && a2>=1 ) || (d==3 && a3>=1) || (d==4 && a2>=2) || (d==5 && a5>=1) || (d==6 && a3>=1 && a2>=1))
              rez+=2;
    }
    if(k%2)
    {
        int j=r/2+1;
        int a2=0,a3=0,a5=0;
        a2 = p2[r]-p2[r-j+1]-p2[r-j];
        a3 = p3[r]-p3[r-j+1]-p3[r-j];
        a5 = p5[r]-p5[r-j+1]-p5[r-j];
        if( ( d==2 && a2>=1 ) || (d==3 && a3>=1) || (d==4 && a2>=2) || (d==5 && a5>=1) || (d==6 && a3>=1 && a2>=1))
              ++rez;
    }
    g<<rez;
    return 0;
}