Pagini recente » Cod sursa (job #3152848) | Cod sursa (job #2414760) | Cod sursa (job #112718) | Cod sursa (job #2422736) | Cod sursa (job #656581)
Cod sursa(job #656581)
#include <cstdio>
#define MAX 5000001
using namespace std;
int multiplu2[MAX];
int multiplu3[MAX];
int multiplu5[MAX];
int n, multiplu;
void citire()
{
freopen("pascal.in", "r", stdin);
scanf("%d %d", &n, &multiplu);
fclose(stdin);
}
void generareVector()
{
if(multiplu == 2 || multiplu == 4)
{
multiplu2[0] = 0;
int t = 0, j;
for(int i = 1; i <= n; i++)
{
j = i;
t = 0;
while(!(j % 2))
{
t++;
j/=2;
}
multiplu2[i] = multiplu2[i - 1] + t;
}
}
if(multiplu == 3)
{
multiplu3[0] = 0;
int t = 0, j;
for(int i = 1; i <= n; i++)
{
j = i;
t = 0;
while(!(j%3))
{
t++;
j/=3;
}
multiplu3[i] = multiplu3[i-1] + t;
}
}
if(multiplu == 5)
{
multiplu5[0] = 0;
int t, j;
for(int i = 1; i <= n; i++)
{
j = i;
t = 0;
while(!(j%5))
{
t++;
j/=5;
}
multiplu5[i] = multiplu5[i - 1] + t;
}
}
if(multiplu == 6)
{
multiplu2[0] = 0;
multiplu3[0] = 0;
int t2, t3, j;
for(int i = 1; i <= n; i++)
{
j = i;
t2 = 0;
t3 = 0;
while(!(j%3))
{
t3++;
j/=3;
}
while(!(j%2))
{
t2++;
j/=2;
}
multiplu2[i] = multiplu2[i - 1] + t2;
multiplu3[i] = multiplu3[i - 1] + t3;
}
}
}
int totalNumber()
{
int contor = 0;
if(multiplu == 2)
{
for(int i = 0; i <= n/2; i++)
{
if((multiplu2[n] - multiplu2[n - i] - multiplu2[i] > 0))
{
contor += 2;
}
}
}
if(multiplu == 3)
{
for(int i = 0; i <= n/2; i++)
{
if((multiplu3[n] - multiplu3[n - i] - multiplu3[i] > 0))
{
contor += 2;
}
}
}
if(multiplu == 4)
{
for(int i = 0; i <= n/2; i++)
{
if((multiplu2[n] - multiplu2[n - i] - multiplu2[i] > 1))
{
contor += 2;
}
}
}
if(multiplu == 5)
{
for(int i = 0; i <= n/2; i++)
{
if((multiplu5[n] - multiplu5[n - i] - multiplu5[i] > 0))
{
contor += 2;
}
}
}
if(multiplu == 6)
{
for(int i = 0; i <= n/2; i++)
{
if((multiplu2[n] - multiplu2[n - i] - multiplu2[i] > 0) && (multiplu3[n] - multiplu3[n - i] - multiplu3[i] > 0))
{
contor += 2;
}
}
}
if(n % 2 == 0)
contor--;
return contor;
}
void afisare()
{
freopen("pascal.out", "w", stdout);
printf("%d", totalNumber());
fclose(stdout);
}
int main()
{
citire();
generareVector();
afisare();
return 0;
}