Cod sursa(job #2089948)

Utilizator mircearoataMircea Roata Palade mircearoata Data 17 decembrie 2017 13:11:01
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long long r,d,cnt;

int v[6][5000001];

bool is4=false;

void calc(int nr)
{
    for(int i = 1;i<=r;i++)
    {
        v[nr][i]=v[nr][i-1];
        int cop=i;
        while(cop%nr==0)
        {
            v[nr][i]++;
            cop/=nr;
        }
    }
}

int main()
{
    in>>r>>d;
    if(d==2 || d==3 || d==5 || d==4)
    {
        if(d==4)
        {
            d=2;
            is4=true;
        }
        calc(d);
        for(int i = 1; i<=r/2; i++)
        {
            if(v[d][r]-v[d][r-i]-v[d][i]>(is4?1:0))
            {
                if(i==r/2)
                {
                    if(r%2==0)
                        cnt++;
                    else
                        cnt+=2;
                }
                else
                    cnt+=2;
            }
        }
    }
    else
    {
        calc(2);
        calc(3);
        for(int i = 1; i<=r/2; i++)
        {
            if(v[2][r]-v[2][r-i]-v[2][i]>0 && v[3][r]-v[3][r-i]-v[3][i]>0)
            {
                if(i==r/2)
                {
                    if(r%2==0)
                        cnt++;
                    else
                        cnt+=2;
                }
                else
                    cnt+=2;
            }
        }
    }
    out<<cnt;
    return 0;
}