1 条题解
-
0
检查题目中条件的最佳方法是使用位掩码。从 遍历到 ,对于每个数字,考虑它的二进制表示。如果该表示的第 位为 ,则决定第 次旋转为顺时针;反之,则为逆时针。最后,检查总角度是否是 的倍数,如果是,则输出
"YES"。如果没有找到任何符合条件的旋转组合,则输出"NO"。#include<bits/stdc++.h> int su[32769]; int n,a[15],i,j,all; int main(){ scanf("%d",&n); for(i=0;i<n;++i)scanf("%d",a+i); for(i=0;i<1<<n;++i)for(j=0;j<n;++j)if(i>>j&1)su[i]+=a[j]; all=su[i-1]; for(i=0;i<1<<n;++i)if((all-su[i]*2)%360==0)break; puts(i<1<<n?"YES":"NO"); return 0; }
- 1
信息
- ID
- 6809
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者