Pagini recente » Cod sursa (job #1005997) | Cod sursa (job #2260139) | Cod sursa (job #783076) | Cod sursa (job #389413) | Cod sursa (job #1870385)
#include <fstream>
using namespace std;
ifstream f ("pascal.in");
ofstream g ("pascal.out");
int st[6],dr[6],j,d,r,i,cj,sol,ci;
void curat()
{
dr[2]=0;
dr[3]=0;
dr[5]=0;
}
int mijloc()
{
if(r%2==0&&j==r/2) return 1;
return 0;
}
int divide()
{
if(d==2)
{
if(st[2]-dr[2]>0) return 1;
else return 0;
}
if(d==3)
{
if(st[3]-dr[3]>0) return 1;
else return 0;
}
if(d==5)
{
if(st[5]-dr[5]>0) return 1;
else return 0;
}
if(d==4)
{
if(st[2]-dr[2]>=2) return 1;
return 0;
}
if(d==3)
{
if(st[2]-dr[2]>0&&st[3]-dr[3]>0) return 1;
else return 0;
}
}
int main()
{
f>>r>>d;
//i!/((i-j)!*j!)
for(j=2;j<=r;++j)
{
i=j;
while(i%2==0)
{
++st[2];
i/=2;
}
while(i%3==0)
{
++st[3];
i/=3;
}
while(i%5==0)
{
++st[5];
i/=5;
}
}
for(j=0;j<=r/2;++j)
{
curat();
for(i=2;i<=j;++i)
{
ci=i;
while(ci%2==0)
{
++dr[2];
ci/=2;
}
while(ci%3==0)
{
++dr[3];
ci/=3;
}
while(ci%5==0)
{
++dr[5];
ci/=5;
}
}
cj=r-j;
for(i=2;i<=cj;++i)
{
ci=i;
while(ci%2==0)
{
++dr[2];
ci/=2;
}
while(ci%3==0)
{
++dr[3];
ci/=3;
}
while(ci%5==0)
{
++dr[5];
ci/=5;
}
}
//g<<dr[2]<<' '<<dr[3]<<' '<<dr[5]<<'\n';
if(divide())
{
sol+=2;
if(mijloc()) --sol;
}
}
g<<sol;
return 0;
}