Задание 17. Информатика. ЕГЭ. Поляков-7679
- Просмотры: 108
- Изменено: 24 ноября 2024
(К. Багдасарян) В файле содержится последовательность натуральных чисел, не превышающих \(1000\). Определите количество пар последовательности, у которых наибольший общий делитель двух чисел пары оканчивается на ту же цифру, что и минимальный элемент последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Решение:
Python
from math import gcd
base = ''
nums = [int(x) for x in open(base + '17.txt')]
min_el = min(nums)
max_sum = 0
q = 0
for x, y in zip(nums, nums[1:]):
if gcd(x, y) % 10 == min_el % 10:
q += 1
max_sum = max(x + y, max_sum)
print(q, max_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_el = 1000000, max_sum = 0, q = 0;
while (!in.eof()) {
int t;
in >> t;
nums.push_back(t);
min_el = min(min_el, t);
}
for(int i = 0; i < nums.size() - 1; i++)
if (gcd(nums[i], nums[i+1]) % 10 == min_el % 10) {
q++;
max_sum = max(max_sum, nums[i] + nums[i+1]);
}
cout << q << " " << max_sum << endl;
}
Ответ: \(11 \,\, 1360\)