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;
}
浙公网安备 33010602011771号