题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2608
题意:展开2项式,求系数
解题思路:转化为2进制
#include <iostream>
#include <stdio.h>
using namespace std;
const int maxn=50+5;
int a[maxn];
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int q;
cin>>q;
long long p;
for(int i=0;i<q;i++)
{
cin>>p;
int ans=1;
if(p==0)
ans=1;
else
{
int k=0;
while(p)
{
if(k==n)
ans=0;
if(p%2)
ans*=a[k];
k++;
p/=2;
if(ans>2012)
ans=ans%2012;
}
}
printf("%d\n",ans);
}
}
return 0;
}