最大公约数GCD

37 阅读1分钟

初始时,你所在的位置为 a =0,你想要去c =d位置。

给定n个整数a1, a2 ..., .n ,表示每次你可以往左移动a;个单位或往右移动a;个单位。请问,最终能否到达c = d位置?能则输出Yes,不能输出No。

  • 找到6,8能去到的最小距离,在看d是不是最小距离的倍数

输入格式

输入共两行:

第一行,两个整数n,d;

第二行,n个正整数α1, a2,.., n o

输出格式

输出能否达到最终目标位置。

输入输出样例

输入#1

2 -4

6 8

Yes

输入#2

2 5

6 8

No

#include <iostream>
#include <vector>
#include<algorithm>
#include<math.h>
using namespace std;
int gcd(int a,int b) {
	return b?gcd(b,a%b):a;
}
int main() {
	int n,d;
	int ans=0;
	cin>>n>>d>>ans;
	int a;
	for(int i=1; i<n; i++) {
		cin>>a;
		ans=gcd(ans,a);
	}
	if(d%ans==0){
		cout<<"Yes";
	}
	else
	cout<<"No";
	return 0;
}