POJ 2249

求在N中取M的个数,简单的组合数。

#include"iostream"
using namespace std;
int main()
{
    int n,k;
    while(cin>>n>>k,n!=0||k!=0)
    {
        if(n-k<k)//根据组合数的公式尽量约去大的部分
            k=n-k;
        int count=k;
        __int64 ans=1;
        while(count--)
        {
            ans*=n--;
            while(ans%k==0&&k>1)//组合数结果一定是整数
            {
                ans/=k;
                k--;
            }
        }
        printf("%I64d\n",ans);
    }
    return 0;
}

POJ 3129判断组合数的奇偶性。

#include"iostream"
using namespace std;  
int main()  
{  
 __int64 n, i;  
 while(cin>>n>>i)  
 {  
  if(i==0) cout<<"1\n";  
  else  
  cout<<(((n&i)==i) ? 1 : 0)<<endl;  
 }  
 return 0;  
}  
posted @ 2011-05-04 22:58  Ac_smile  阅读(278)  评论(0编辑  收藏  举报