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; }