@zzzc18
2017-05-11T21:05:52.000000Z
字数 602
阅读 1496
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;
}