1,楊輝三角形的第i列滿足:(i>=0)
C(0,i) C(1,i) … C(i,i)
即是一組全排列公式。
2,第i行奇數的個數等於將i分解成二進制數之後,統計這個二進制數裏面有幾個1,奇數的個數爲2^k,k爲二進制數中1的個數。(這個規律打表可以看到,奇數的個數全是2的k次方,代碼)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL solve(LL L,LL R)
{
if(L==0||L==R) return 1;
LL ans1=1,ans2=1;
for(LL i=R;i>=R-L+1;i--)
{
ans1*=i;
}
for(LL i=L;i>=1;i--)
{
ans2*=i;
}
return ans1/ans2;
}
LL ksm(LL a,LL b)
{
LL ans=1;
while(b)
{
if(b&1) ans*=a;
a*=a;
b>>=1;
}
return ans;
}
int main()
{
int s=0;
for(int i=1;i<=12;i++)
{
s=0;
printf("i==%d:\n",i);
for(int j=0;j<=i;j++)
{
LL ans=solve(j,i);
if((ans&1)==1) s++;
}
printf("%d\n",s);
}
int n,n2;
while(scanf("%d",&n)!=EOF)
{
n2=n;
int c=0;
while(n)
{
if((n&1)) c++;
n>>=1;
}
printf("%lld\n",ksm(2,c));
}
return 0;
}