1.统计因子2的个数

借鉴一个数学方法:统计数为n的因子为i的个数(与下面所述等同)

计算1~n之间包含一个因子i的个数的简单算法就是:
cnt = 0; while (n) { n /= i; cnt += n; }

代码如下:

#include<stdio.h>
int main()
{
 int a,b,c,m,n,k;
 while(scanf("%d %d",&n,&k)==2)
 {
  m=n-k;a=b=c=0;
  while(n=n>>1) a+=n;
  while(m=m>>1) b+=m;
  while(k=k>>1) c+=k;
  if(a>b+c)
   printf("0\n");
  else
   printf("1\n");
 }
 return 0;
}

2.利用一个公式

如果(N & k) == k,那么就是1,否则是0(看不懂

先写在这边

代码如下:

#include<stdio.h>
int main()
{
 int n,k;
 while(scanf("%d %d",&n,&k)==2)
 {
  printf("%d\n",(n & k)== k?1:0);
 }
 return 0;
}

题目如下:

 

二项式系数C(n, k)因它在组合数学中的重要性而被广泛地研究。二项式系数可以如下递归的定义:

C(1, 0) = C(1, 1) = 1;
C(n, 0) = 1对于所有n > 0;
C(n, k) = C(n − 1, k − 1) + C(n − 1, k)对于所有0 < kn

给出nk,你要确定C(n, k)的奇偶性。

posted on 2008-11-08 19:30  pandy  阅读(363)  评论(0编辑  收藏  举报