Форум » Массивы, сортировка, работа с файлами » Задача 3768 (А. Кабанов) » Ответить

Задача 3768 (А. Кабанов)

kperep: Добрый день! Никак не могу понять, почему не сходятся ответы. У меня: 50298 10138060 Правильный: 49867 10002885 Условие: В текстовом файле записан набор натуральных чисел. Гарантируется, что все числа различны. Рассматриваются пары чисел из набора, между которыми в отсортированном массиве помещаются не более 100 чисел из того же набора. Определите количество пар с суммой кратной 10, а также наименьшее среднее арифметическое таких пар. Входные данные представлены в файле 26-52.txt следующим образом. Первая строка содержит целое число N – общее количество чисел в наборе. Каждая из следующих N строк содержит одно число, не превышающее 109. В ответе запишите два целых числа: сначала количество пар, затем наименьшее среднее арифметическое. Пример входного файла: 8 3 8 14 11 2 16 5 9 В примере рассмотрим пары, между которыми помещаются не более 3 чисел из набора. В данном случае есть три подходящие пары: 2 и 8, 9 и 11, 14 и 16. В ответе надо записать числа 3 и 5. Мой код на Python: [pre2] f = open("26.txt") n = int(f.readline()) m = [int(f.readline()) for _ in range(n)] m.sort() counter = 0 min_pair = 1000000001 for i in range(n - 1): for j in range(i + 1, min(i + 102, n)): if (m[ i] + m[j]) % 10 == 0: counter += 1 if ((m[ i] + m[j]) // 2) < min_pair: min_pair = (m[ i] + m[j]) // 2 print(counter, min_pair) [/pre2]

Ответов - 6

cabanov.alexey: Не соглашусь с вашим циклом, пишите проще. Исхожу из соображения что расстояние между числами меньше количества чисел на единицу. [pre2] for i in range(n - 1): for j in range(i + 1, n): if (j-i)<=101 and ...[/pre2]

kperep: Спасибо за подсказку. У меня посчитало правильно количество пар, только когда сделал [pre2]if (j - i) <= 101 and (m[ i] + m[j]) % 10 == 0[/pre2]

cabanov.alexey: И вы сделали абсолютно верно!


kirill12093: Добрый день, получается такой же ответ, как и у krerep Возможно,я не так понял условие,поэтому хочу понять ошибку в моей логике Вот мой код,он правда на Java,но там все достаточно понятно [pre2] import java.io.File; import java.io.FileNotFoundException; import java.util.Arrays; import java.util.Scanner; public class _3768 { public static void main(String[] args) throws FileNotFoundException { File f = new File("C:\\Users\\maks\\Desktop\\ЕГЭ\\_3770.txt"); Scanner in = new Scanner(f); int n = in.nextInt(); int [] mas = new int [n]; for(int i = 0; i < n ; i++){ mas[ i] = in.nextInt(); } Arrays.sort(mas); for(int i = 0; i < n ;i++){ System.out.print(mas[ i] + " "); } System.out.println(); int count = 0; int minAvg = Integer.MAX_VALUE; for(int i = 0 ; i < n ;i++){ int k = i - 101; if(k < 0){ k = 0; } for(int j = k;j < i;j++){ if((mas[ i] + mas[j]) % 10 ==0){ count++; if(((mas[ i] + mas[j]) / 2) < minAvg){ minAvg = (mas[ i] + mas[j])/2; } } } } System.out.println(count + " " + minAvg); } }[/pre2]

Айгулья: можно ли решить эту задачу на экзеле?Если да то можно как?

cabanov.alexey: Проверьте что файл соответствует задаче, вашим кодо получаю верный ответ.



полная версия страницы