题意:
给定n个数,问你是否能组成3600的倍数,如果可以输出YES 否则输出NO
解析:
用bitset优化dp 对每一个数都%3600 然后标记cur[x%3600]=1
最后判断cur[3600]是否为1
#include<bits/stdc++.h>
using namespace std;
int t,x;
int n;
bitset<10000> cur;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
cur.reset();
cur[0]=1;
for(int i=1;i<=n;i++)
{
cin>>x;x%=3600;
cur|=cur<<x;
cur|=cur>>3600;
}
if(cur[3600]) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}