[关闭]
@zzzc18 2017-05-11T21:05:52.000000Z 字数 602 阅读 1451

2017.5.1 A

TEST


Description

给定一个长度为n的序列.
现在对于一个数x,我们每次可以选择一个k,将x变为或者,一个数x被称为是好的,当且仅当经过一系列操作后,我们可以将x变为0.
现在给定一个长度为m的序列,你需要求出这个序列中好的数的个数。重复的数分别记答案。

input

line1:n
line2:
line3:m
line4:

output

line1:ANS

Sample

1
3
6
1 2 3 4 5 6


Solution

求整个序列的最大公约数,若能整除x,x即为好
因为x若不是这个公约数的倍数,再加减乘除也得不出来

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. int n;int Ga;
  5. int main(){
  6. freopen("a.in","r",stdin);
  7. freopen("a.out","w",stdout);
  8. int x;
  9. scanf("%d",&n);
  10. scanf("%d",&x);Ga=x;
  11. int i;
  12. for(i=2;i<=n;i++){
  13. scanf("%d",&x);
  14. Ga=__gcd(Ga,x);
  15. }
  16. scanf("%d",&n);
  17. int ans=0;
  18. for(i=1;i<=n;i++){
  19. scanf("%d",&x);
  20. if(x%Ga==0)
  21. ans++;
  22. }
  23. printf("%d\n",ans);
  24. return 0;
  25. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注