Cod sursa(job #3165439)
Utilizator | Data | 6 noiembrie 2023 11:00:38 | |
---|---|---|---|
Problema | Pascal | Scor | 60 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.26 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
int 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/2;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++;
}
}
}
nr=nr*2;
if(n%2==0)
{
int a=A[n]-A[n/2]-A[n/2];
int b=B[n]-B[n/2]-B[n/2];
int 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;
}