Cod sursa(job #1844690)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 10 ianuarie 2017 12:29:45
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <cstdio>
#include <iostream>
using namespace std;
int v[5000002],w[5000002];
int main()
{
    FILE *fin=fopen ("pascal.in","r");
    FILE *fout=fopen ("pascal.out","w");
    int r,d,sol,i,nr,ok,doi,trei;
    fscanf (fin,"%d%d",&r,&d);
    sol=0;
    if (d==2 || d==3 || d==5){
        for (i=1;i<=r;i++){
            nr=i;
            while (nr%d==0){
                v[i]++;
                nr/=d;
            }
            //printf ("%d ",v[i]);
            v[i]+=v[i-1];
        }
    }
    else if (d==4){
        ok=0;
        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++;
    }
    fprintf (fout,"%d",sol);
    return 0;
}