Я пытаюсь решить проблему, в которой задано целое число n
и массив целых чисел a
- можно n
представить в виде линейной комбинации элементов из a
так, чтобы коэффициенты положительные целые числа.
Я видел C: проверить, является ли целое число линейной комбинацией элементов в массиве и реализовал его как таковой в C, но это не так.не работает во всех случаях.
int gcd(int a, int b) {
if (a == 0) {
return b;
}
return gcd(b % a, a);
}
bool can_be_changed(const int a[], int len, int val) {
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (val % gcd(a[i], a[j]) == 0) {
return true;
}
}
}
return false;
}
Но, если a = {4,5,6}
и val=7
, код вернет true как gcd(4,5) = 1
, а 7 % gcd(4,5) == 0
будет иметь значение true
, возвращая, таким образом, true
что не должно.
Любая помощь приветствуется, спасибо!