Cod sursa(job #1844666)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 10 ianuarie 2017 11:47:58
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>

using namespace std;
int v[5000001],div[2];
int main()
{
    FILE *fin=fopen ("pascal.in","r");
    FILE *fout=fopen ("pascal.out","w");
    int r,d,sol,i,nr,st,ok,j;
    fscanf (fin,"%d%d",&r,&d);
    sol=0;
    if (d==2 || d==3 || d==5)
        div[0]=d;
    else if (d==4){
        div[0]=2;
        st=1;
    }
    else {
        div[0]=2;
        div[1]=3;
    }
    ok=0;
    for (i=1;i<=r;i++){
        nr=i;
        for (j=0;j<2 && div[j]!=0;j++){
            while (nr%div[j]==0){
                v[i]++;
                nr/=div[j];
            }
        }
        if (st && v[i]%2==1){
            if (ok==1){
                ok=0;
                v[i]++;
            }
            else ok=1;
        }
        if (st)
            v[i]/=2;
        v[i]+=v[i-1];
    }
    for (i=0;i<r;i++){
        if (v[r]-v[r-i]-v[i]>0)
            sol++;
    }
    fprintf (fout,"%d",sol);
    return 0;
}