Cod sursa(job #3165450)

Utilizator DomnulMilandruMilandru Nicon-David DomnulMilandru Data 6 noiembrie 2023 11:11:51
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
long long n,m,nr,q;
vector<int> A,B,C;
int main()
{
    cin>>n>>m;
    A.resize(n+1);
    B.resize(n+1);
    C.resize(n+1);
    for(int i=1;i<=n;i++)
    {
        int aux=i;
        while(aux%2==0)
        {
            A[i]++;
            aux=aux/2;
        }
        aux=i;
        while(aux%3==0)
        {
            B[i]++;
            aux=aux/3;
        }
        aux=i;
        while(aux%5==0)
        {
            C[i]++;
            aux=aux/5;
        }
        A[i]=A[i]+A[i-1];
        B[i]=B[i]+B[i-1];
        C[i]=C[i]+C[i-1];
    }
    for(int i=0;i<=n;i++)
    {
        int a=A[n]-A[i]-A[n-i];
        int b=B[n]-B[i]-B[n-i];
        int c=C[n]-C[i]-C[n-i];
        switch (m)
        {
            case 2:
            {
                if(a)
                 nr++;
                break;
            }
            case 3:
            {
                if(b)
                  nr++;
                break;
            }
            case 4:
            {
                if(a>1)
                 nr++;
                break;
            }
            case 5:
            {
                if(c)
                  nr++;
                break;
            }
            case 6:
            {
                if(a && b)
                  nr++;
            }
        }
    }
    cout<<nr;
    return 0;
}