@zzzc18
2017-05-11T13:05:52.000000Z
字数 602
阅读 1902
TEST
给定一个长度为n的序列.
现在对于一个数x,我们每次可以选择一个k,将x变为或者,一个数x被称为是好的,当且仅当经过一系列操作后,我们可以将x变为0.
现在给定一个长度为m的序列,你需要求出这个序列中好的数的个数。重复的数分别记答案。
line1:n
line2:
line3:m
line4:
line1:ANS
1
3
6
1 2 3 4 5 6
求整个序列的最大公约数,若能整除x,x即为好
因为x若不是这个公约数的倍数,再加减乘除也得不出来
#include<cstdio>#include<algorithm>using namespace std;int n;int Ga;int main(){freopen("a.in","r",stdin);freopen("a.out","w",stdout);int x;scanf("%d",&n);scanf("%d",&x);Ga=x;int i;for(i=2;i<=n;i++){scanf("%d",&x);Ga=__gcd(Ga,x);}scanf("%d",&n);int ans=0;for(i=1;i<=n;i++){scanf("%d",&x);if(x%Ga==0)ans++;}printf("%d\n",ans);return 0;}
