找规律 技巧题 快速幂

题意:

给你个N,统计C(N,0),C(N,1)。。,C(N,N)中奇数的个数

算法:

统计N中1的个数就可以了,然后快速幂

View Code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<vector>
#include<string>
#include<math.h>
#include<map>
#include<set>
#include<algorithm>
using namespace std;

int mp[100][100];

long long quickpow(int m,int n)
{
    long long b = 1;
    while (n > 0)
    {
          if (n & 1)
             b = (b*m);
          n = n >> 1 ;
          m = (m*m);
    }
    return b;
} 
 
int main( )
{
  int N;
  while( scanf("%d",&N) != EOF )
  {  
     int ans = 0;
     while( N )
     {
       int f = N & 1;
       if( f )
           ans++;
       N = N / 2;
     }
     printf("%I64d\n",quickpow(2,ans));
         
  }  
  return 0;  
}

posted on 2012-08-07 18:13  more think, more gains  阅读(194)  评论(0编辑  收藏  举报

导航