Задание 17. Информатика. ЕГЭ. Поляков-7682
- Просмотры: 108
- Изменено: 24 ноября 2024
(К. Багдасарян) В файле содержится последовательность натуральных чисел, не превышающих \(1000\). Определите количество пар элементов последовательности, в которых элементы пары взаимно просты (т.е. не имеют общих делителей, кроме \(1\)) и имеют разную четность. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два подряд идущих элемента последовательности.
Решение:
Python
from math import gcd
base = ''
nums = [int(x) for x in open(base + '17.txt')]
q = 0
min_sum = 10000000
for x, y in zip(nums, nums[1:]):
if gcd(x, y) == 1 and x % 2 != y % 2:
q += 1
min_sum = min(min_sum, x + y)
print(q, min_sum)
C++
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
int gcd(int x, int y) {
while (x != y) {
if (x > y) {
int t = x % y;
x = (t) ? t : y;
}
else {
int t = y % x;
y = (t) ? t : x;
}
}
return x;
}
int32_t main() {
vector<int> nums;
string base = "";
ifstream in(base + "17.txt");
int min_sum = 1000000, q = 0;
while (!in.eof()) {
int t;
in >> t;
nums.push_back(t);
}
for(int i = 0; i < nums.size() - 1; i++)
if (gcd(nums[i], nums[i+1]) == 1 && nums[i] % 2 != nums[i+1] % 2) {
q++;
min_sum = min(min_sum, nums[i] + nums[i+1]);
}
cout << q << " " << min_sum << endl;
}
Ответ: \(2 \,\, 953\)