组合数学小结论

#include <cstdio>
#include 
<cstdlib>

int isodd(int n,int k)
{
    
if((n&k)==k)
        
return 1;
    
return 0;   
}

int oddsum(int n)
{
    
if(n==0return 1;
    
int a=1;
    
while(n/2)
    {
        a
*=(n%2+1);
        n
/=2;   
    }   
    
return 2*a;
}


int main()
{
        
int n,k;
while (scanf("%d %d"&n, &k) != EOF) {
   
--k;
   printf(
"%d %d\n", isodd(n,k),oddsum(n) );
}
//system("pause");
return 0;
}

http://acm.fzu.edu.cn/problem.php?pid=1622
题目大意:给出两个数n,k,问在杨辉三角中第n行第k列的数是偶数还是偶数,第n行有多少个奇数。行数从0开始,列数从1开始。
组合数有如下性质:C(n,k)=C(n,k-1)+C(n-1,k-1),杨辉三角第n行第k满足上述性质,可以用组合数来表示。
另外,有如下结论:
1、组合数C(n,k)如果满足n&k=k,则是奇数,否则是偶数;
2、把n转化成2进制,a1a2a3...ai,奇数个数为(a1+1)*(a2+1)*(a3+1)...(ai+1);

以上结论很好很强大,要记住!
附代码:

posted on 2008-07-21 22:20 dosXP 阅读(157) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

研究中...

常用链接

留言簿(1)

随笔档案(2)

文章档案(10)

搜索

最新评论

  • 1. re: 激情
  • 一起加油~~
    哈哈~

    今晚发现了好多人的blog
  • --mgy

阅读排行榜

评论排行榜