Pagini recente » Cod sursa (job #1853846) | Cod sursa (job #2485964) | Cod sursa (job #1796271) | Cod sursa (job #1704491) | Cod sursa (job #1832893)
/********************
Created by Sburly
********************/
#include <fstream>
using namespace std;
unsigned long int r;
int d;
unsigned int nr2[2500000], nr3[2500000], nr5[2500000];
unsigned int cd[2500000][3];
int calcdiv(int nr, int d)
{
int temp = nr;
int p = d;
int val = temp/p;
int sol = 0;
while(val)
{
sol += val;
p*=d;
val = temp/p;
}
return sol;
}
bool b = false;
bool b2 = false;
int main()
{
ifstream f("pascal.in");
ofstream g("pascal.out");
f >> r >> d;
unsigned int r2 = r/2+1;
if(r%2 == 0)
{
b = true;
}
unsigned int lv2 = calcdiv(r,2);
unsigned int lv3 = calcdiv(r,3);
unsigned int lv5 = calcdiv(r,5);
for(unsigned int i = 0; i < r+1; i++)
{
cd[i][0] = calcdiv(i,2);
cd[i][1] = calcdiv(i,3);
cd[i][2] = calcdiv(i,5);
}
for(unsigned int i = 0; i < r2; i++)
{
nr2[i] = lv2 - cd[r-i][0] - cd[i][0];
}
for(unsigned int i = 0; i < r2; i++)
{
nr3[i] = lv3 - cd[r-i][1] - cd[i][1];
}
for(unsigned int i = 0; i < r2; i++)
{
nr5[i] = lv5 - cd[r-i][2] - cd[i][2];
}
if(b) r2--;
int k = 0;
if(d == 2)
{
for(unsigned int i = 0; i < r2; i++)
{
if(nr2[i] != 0) k++;
}
if(b) if(nr2[r2] != 0) b2 = true;
}
else
if(d == 3)
{
for(unsigned int i = 0; i < r2; i++)
{
if(nr3[i] != 0) k++;
}
if(b) if(nr3[r2] != 0) b2 = true;
}
else
if(d == 4)
{
for(unsigned int i = 0; i < r2; i++)
{
if(nr2[i] >= 2) k++;
}
if(b) if(nr2[r2] >= 2) b2 = true;
}
else
if(d == 5)
{
for(unsigned int i = 0; i < r2; i++)
{
if(nr5[i] != 0) k++;
}
if(b) if(nr5[r2] != 0) b2 = true;
}
else
if(d == 6)
{
for(unsigned int i = 0; i < r2; i++)
{
if(nr2[i] != 0 && nr3[i] != 0) k++;
}
if(b) if(nr2[r2] != 0 && nr3[r2] != 0) b2 = true;
}
if(r == 2 && d == 2)
g << 1;
else
if(b2)
g << k*2+1;
else
g << k*2;
return 0;
}