题目大意:求杨辉三角第m行奇数的个数
题解:找规律ans=2ⁿ,n为 m-1 的二进制中 1 的个数
AC代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long ll;
int t;
ll k;
ll ksm(ll b)
{
ll ans=1;
ll a=2;
while(b)
{
if(b&1) ans*=a;
a*=a;
b>>=1;
}
return ans;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%lld",&k);
ll ans=0;
k--;
while(k)
{
if(k&1) ans++;
k>>=1;
}
ans=ksm(ans);
printf("%lld\n",ans);
}
return 0;
}