Cod sursa(job #2320186)

Utilizator lucaperjuLuca Perju Verzotti lucaperju Data 14 ianuarie 2019 14:44:35
Problema Pascal Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>

using namespace std;
ifstream cin ("pascal.in");
ofstream cout ("pascal.out");
long long mod;
long long d[6];
void upd (long long val)
{
    while(!(val&1LL))
    {
        val>>=1LL;
        ++d[2];
    }
    while(!(val%3))
    {
        val/=3;
        ++d[3];
    }
    while(!(val%5))
    {
        val/=5;
        ++d[5];
    }
}
void sct (long long val)
{
    while(!(val&1LL))
    {
        val>>=1LL;
        --d[2];
    }
    while(!(val%3))
    {
        val/=3;
        --d[3];
    }
    while(!(val%5))
    {
        val/=5;
        --d[5];
    }
}
int main()
{
    long long r,i,cur=0,cnt=0,inmul,imp=2;
    cin>>r>>mod;
    inmul=r-1;
    upd(r);
    ++cnt;
    while(inmul>=2)
    {
        upd(inmul);
        sct(imp);
        --inmul;
        ++imp;
        if(mod==2 && d[2])
            ++cnt;
        else
        if(mod==3 && d[3])
            ++cnt;
        else
        if(mod==4 && d[2]>1)
            ++cnt;
        else
        if(mod==5 && d[5])
            ++cnt;
        else
        if(mod==6 && min(d[2],d[3]))
            ++cnt;
    }
    cout<<cnt;
    return 0;
}