POJ 3252 Round Numbers(二)
{
if(base[i]==1)
{
if(l1%2==0)
{
j=l1/2;
}else
{
j=l1/2+1;
}
for(j=j-1-sum;j<=i; j++)
{
if(j>=0)
{
s-=f(j,i);
}
}
}else
{
sum++;
}
}
if(l1%2==0)
{
weishu=l1/2;
}else
{
weishu=l1/2+1;
}
if(base[0]==1)
{
if(sum>=weishu)
{
s-=2;
}else
{
if((weishu-sum)==1)
{
s--;
}
}
}else
{
if((sum+1)>=weishu)
{
s--;
}
}
}
printf("%lld\n",s);
return 0;
}
long long int f(int m,int n)
{
int i,j;
long long int res;
double s;
if(m<0||m>n)
{
return 0;
}
if(m==0)
{
return 1;
}
s=1.0;
for(i=n,j=m;i>=n-m+1;i--,j--)
{
s=s*(double)i/(double)j;
}
res=(long long int)(s+0.01);
return res;
}