*[hackerrank]Die Hard 3

https://www.hackerrank.com/contests/w7/challenges/die-hard-3

首先,发现c <= max(a, b) 而且 c = aX + bY时有解。然后根据扩展欧几里得算法知道c % gcd(a, b) == 0时有解。

#include <vector>
#include <iostream>

using namespace std;

int gcd(int a, int b) {
	if (a % b == 0) {
		return b;
	} else {
		return gcd(b, a % b);
	}
}

int main() {
	int T;
	cin >> T;
	while (T--) {
		int a, b, c;
		cin >> a >> b >> c;
		int r = gcd(a, b);
		if (c % r == 0 && c <= max(a, b)) {
			cout << "YES" << endl;
		} else {
			cout << "NO" << endl;
		}
	}
    return 0;
}

  

posted @ 2014-08-12 10:47  阿牧遥  阅读(184)  评论(0编辑  收藏  举报