Cod sursa(job #2631034)

Utilizator Wister1043Silaghi Razvan-Andrei Wister1043 Data 28 iunie 2020 16:23:41
Problema Pascal Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <fstream>

using namespace std;

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

int vect2[5000000],vect3[5000000],vect5[5000000];

int main()
{
    int R,D,i;
    fin>>R>>D;
    for(i=2;i<=R;i=i*2)
    {
        vect2[i]=vect2[i/2]+1;
    }
    for(i=3;i<=R;i=i*3)
    {
        vect3[i]=vect3[i/3]+1;
    }
    for(i=5;i<=R;i=i*5)
    {
        vect5[i]=vect5[i/5]+1;
    }
    for(i=1;i<=R;i++)
    {
        vect2[i]+=vect2[i-1];
        vect3[i]+=vect3[i-1];
        vect5[i]+=vect5[i-1];
    }
    int nr=0;
    switch(D)
    {
        case 2:
            for(i=0;i<=R;i++)
            {
                int val=vect2[R]-vect2[R-i]-vect2[i];
                if(val!=0)
                {
                    nr++;
                }
            }
        break;
        case 3:
            for(i=0;i<=R;i++)
            {
                int val=vect3[R]-vect3[R-i]-vect3[i];
                if(val!=0)
                {
                    nr++;
                }
            }
        break;
        case 4:
            for(i=0;i<=R;i++)
            {
                int val=vect2[R]-vect2[R-i]-vect2[i];
                if(val>1)
                {
                    nr++;
                }
            }
        break;
        case 5:
            for(i=0;i<=R;i++)
            {
                int val=vect5[R]-vect5[R-i]-vect5[i];
                if(val!=0)
                {
                    nr++;
                }
            }
        break;
        case 6:
            for(i=0;i<=R;i++)
            {
                int val1=vect2[R]-vect2[R-i]-vect2[i];
                int val2=vect3[R]-vect3[R-i]-vect3[i];
                if(val1!=0 && val2!=0)
                {
                    nr++;
                }
            }
        break;
    }
    fout<<nr;
    return 0;
}