Сегодня Антоша узнал о существовании k-расивых чисел. Число можно назвать k-расивым, если оно делится на все натуральные числа от 1 до k включительно. Помогите Антоше написать программу, которая определяет, есть ли в данном наборе чисел k-расивое число. Даны число n , массив a , состоящий из n чисел, и число k . Все числа в задании являются натуральными. Выведите 1 , если в массиве присутствует k-расивое число, и 0 , если таковых нет. Входные данные В первое строке вводится число n ( 1 ≤ n ≤ 1000 ) - размер массива a . Во второй строке вводится массив a ( 1 ≤ a i ≤ 10 9 ). В третьей строке вводится число k ( 1 ≤ k ≤ 10 ). Выходные данные В единственной строке выводится 0, если в массиве a отсутствуют k-расивые числа, или 1 , если в массиве есть хотя бы одно k-расивое число.
// Функция для нахождения НОД (наибольшего общего делителя)
int gcd(int a, int b) {
while (b) {
a %= b;
std::swap(a, b);
}
return a;
}
// Функция для нахождения НОК (наименьшего общего кратного)
int lcm(int a, int b) {
return (a / gcd(a, b)) * b;
}
// Функция для нахождения НОК чисел от 1 до k
int lcm_up_to_k(int k) {
int result = 1;
for (int i = 1; i <= k; ++i) {
result = lcm(result, i);
}
return result;
}
int main() {
int n, k;
std::cin >> n;
std::vector<int> a;
for (int i = 0; i < n; ++i) {
std::cin >> a;
}
std::cin >> k;
// Нахождение НОК чисел от 1 до k
int target_lcm = lcm_up_to_k(k);
// Проверка наличия числа, делящегося на target_lcm
bool found = false;
for (int i = 0; i < n; ++i) {
if (a % target_lcm == 0) {
found = true;
break;
}
}
int main() {
array a{};
size_t n;
cin >> n;
for (size_t i = 0; i < n; ++i) cin >> a;
size_t k;
cin >> k;
array b{0, 1};
for (size_t i = 2; i < b.size(); ++i) {
b = lcm(b[i - 1], i);
}
auto no = true;
for (size_t i = 0; i < n; ++i) {
if (0 == a % b[k]) {
no = !no;
break;
}
}
puts(no ? "0" : "1");
}
Я создаю парсеры для сайтов и ботов лёгкой и средней сложности
Заказывай у меня качественные услуги по доступной цене -->
Заходишь на сайт "КВОРК РУ" и в поиске вбиваешь "stepan1dzeqq"