Cod sursa(job #2911607)

Utilizator Gica-gicutaGeorge Gica-gicuta Data 30 iunie 2022 18:18:36
Problema Pascal Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <fstream>

using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
short int mat[3][5000005];
char f2[2500005];
char f3[2000005];
char f5[2000005];
int main()
{
    int n,d;
    cin>>n>>d;
    for(int i=1; i<=n; i++)
    {
        int ci=i,sum2=0,sum3=0,sum5=0;
        if(i%2==0)
        {
            if(i%4==0)
            {
                f2[i/2]=f2[i/4]+1;
            }
        }
        if(i%3==0)
        {
            if(i%9==0)
            {
                f3[i/3]=f3[i/9]+1;
            }
        }
        if(i%5==0)
        {
            if(i%25==0)
            {
                f5[i/5]=f5[i/25]+1;
            }
        }
        mat[0][i]=mat[0][i-1];
        mat[1][i]=mat[1][i-1];
        mat[2][i]=mat[2][i-1];
        if(i%2==0)
            mat[0][i]=mat[0][i-1]+f2[i/2]+1;
        if(i%3==0)
            mat[1][i]=mat[1][i-1]+f3[i/3]+1;
        if(i%5==0)
            mat[2][i]=mat[2][i-1]+f5[i/5]+1;
    }
    int cnt=0,c2=0,c3=0,c5=0;
    while(d%2==0)
    {
        c2++;
        d/=2;
    }
    while(d%3==0)
    {
        c3++;
        d/=3;
    }
    while(d%5==0)
    {
        c5++;
        d/=5;
    }
    for(int i=1; i<=n/2; i++)
    {
        int a2=mat[0][n]-mat[0][i]-mat[0][n-i];
        int a3=mat[1][n]-mat[1][i]-mat[1][n-i];
        int a5=mat[2][n]-mat[2][i]-mat[2][n-i];
        if(a2>=c2&&a3>=c3&&a5>=c5&&i*2!=n)
            cnt+=2;
        else if(a2>=c2&&a3>=c3&&a5>=c5&&i*2==n)
            cnt++;
    }
    cout<<cnt;
    return 0;
}