Cod sursa(job #3165441)
Utilizator | Data | 6 noiembrie 2023 11:02:44 | |
---|---|---|---|
Problema | Pascal | Scor | 40 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.33 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
long long n,m,nr,q;
vector<long long> A,B,C;
int main()
{
cin>>n>>m;
A.resize(n+1);
B.resize(n+1);
C.resize(n+1);
for(long long i=1;i<=n;i++)
{
long long 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(long long i=0;i<n/2;i++)
{
long long a=A[n]-A[i]-A[n-i];
long long b=B[n]-B[i]-B[n-i];
long long 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++;
}
}
}
nr=nr*2;
if(n%2==0)
{
long long a=A[n]-A[n/2]-A[n/2];
long long b=B[n]-B[n/2]-B[n/2];
long long c=C[n]-C[n/2]-C[n/2];
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;
}