Cod sursa(job #2089472)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 16 decembrie 2017 16:37:13
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <fstream>
using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
const int nmax=5000000;
int n,k;
int d2[nmax+5];
int d3[nmax+5];
int d5[nmax+5];
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        d2[i]=d2[i-1];
        int aux=i;
        while(aux%2==0)
        {
            aux/=2;
            d2[i]++;
        }
    }
    for(int i=1;i<=n;i++)
    {
        d3[i]=d3[i-1];
        int aux=i;
        while(aux%3==0)
        {
            aux/=3;
            d3[i]++;
        }
    }
    for(int i=1;i<=n;i++)
    {
        d5[i]=d5[i-1];
        int aux=i;
        while(aux%5==0)
        {
            aux/=5;
            d5[i]++;
        }
    }
    int sol;
    if(k==2)
    {
        sol=0;
        for(int i=0;i<=n;i++)
        {
            int val=d2[n]-d2[n-i]-d2[i];
            if(val>=1)
                sol++;
        }
        cout<<sol;
        return 0;
    }
    if(k==3)
    {
        sol=0;
        for(int i=0;i<=n;i++)
        {
            int val=d3[n]-d3[n-i]-d3[i];
            if(val>=1)
                sol++;
        }
        cout<<sol;
        return 0;
    }
    if(k==4)
    {
        sol=0;
        for(int i=0;i<=n;i++)
        {
            int val=d2[n]-d2[n-i]-d2[i];
            if(val>=2)
                sol++;
        }
        cout<<sol;
        return 0;
    }
    if(k==6)
    {
        sol=0;
        for(int i=0;i<=n;i++)
        {
            int val2=d2[n]-d2[n-i]-d2[i];
            int val3=d3[n]-d3[n-i]-d3[i];
            if(val2>=1 and val3>=1)
                sol++;
        }
        cout<<sol;
        return 0;
    }
    return 0;
}