Форум » Массивы, сортировка, работа с файлами » Что с примером в 3764? » Ответить

Что с примером в 3764?

VectorASD: Почему в реальных условиях надо разницу считать в обе стороны, что как раз и в условии задачки, а в примере куда-то 2 пары пропали? В итоге из 9 нормальных пар две отлетают и 7 записаны в ответ XD Прога: [pre2] #Начал разработку: 20:42 #Время получения ответа: 20:47 (с первой попытки ;S) def Z3764(): Primer = True #Если False, то выйдет ПРАВИЛЬНЫЙ ответ к реальной задаче по файлу if Primer: N, K = 8, 1 Data = 2, 3, 5, 8, 9, 11, 14, 17 else: with open(GPath + "26-48.txt") as file: N = int(file.readline()) Data = [int(file.readline()) for i in range(N)] K = 5 Data = sorted(Data) Data2 = set(Data) Len = len(Data) Pairs = [] for A in range(Len - 1): Zn = Data[A] for B in range(A + 1, Len): Zn2 = Data[ B] Sum = Zn + Zn2 SredA = Sum // 2 if Sum % 2 == 0 and (SredA - K in Data2 or SredA + K in Data2): Pairs.append(SredA) if Primer: print(Zn, Zn2, Sum, SredA) print("Ответ Z3764:", len(Pairs), min(Pairs)) [/pre2] Выводка программы: [pre2] Выберите, какую задачку вывести: 0: Выход 1: Z2617 2: Z2618 3: Z2619 4: Z2620 5: Z2621 6: Z2622 7: Z2623 8: Z2624 9: Z2625 10: Z2626 11: Z2627 12: Z2628 13: Z2629 14: Z2630 15: Z2631 16: Z2632 17: Z2633 18: Z2634 19: Z2635 20: Z2636 21: Z2637 22: Z2638 23: Z2639 24: Z2640 25: Z2641 26: Z2642 27: Z2643 28: Z2644 29: Z2645 30: Z2646 31: Z2647 32: Z2648 33: Z2649 34: Z2650 35: Z2707 36: Z2708 37: Z2709 38: Z2836 39: Z3152 40: Z3153 41: Z3154 42: Z3442 43: Z3754 44: Z3755 45: Z3760 46: Z3761 47: Z3762 48: Z3763 49: Z3764 50: Z3765 51: Z3766 52: Z3767 53: Z3768 54: Z3769 55: Z3770 56: Z4102 57: Z4132 58: Z_Example 59: Z_XZ 60: Все Введите число от 0 до 60: 49 Запускаю функцию 'Z3764'! 2 14 16 8 3 5 8 4 3 9 12 6 3 11 14 7 3 17 20 10 5 9 14 7 5 11 16 8 9 11 20 10 9 17 26 13 Ответ Z3764: 9 4 Прошло: 0.07744431495666504 секунд! Press Enter! [/pre2]

Ответов - 3

cabanov.alexey: Исходные числа не от этой задачи.

cabanov.alexey: [pre2] from itertools import combinations a = [3,8,14,11,2,17,5,9] for x,y in combinations(a,2): if (x+y)%2==0: c = (x+y)//2 m = min(abs(i-c) for i in a) if m==1: print(x,y) [/pre2]

inform_lesson: [pre2] Что не так с вариантом па паскале? var m:array of integer; i,j,k,min,n,a,z:integer; sr:integer; begin assign(input,'26-48.txt'); readln(n); setlength(m,n); for i:=0 to n-1 do begin readln(a); m[ i]:=a; end; min:=10000000000; for i:=0 to n-2 do for j:=i+1 to n-1 do begin if (m[ i]+m[ j])mod 2=0 then begin sr:=(m[ i]+m[ j])div 2; if abs(sr m[ i])<abs(sr-m[ j]) then k:=abs(sr-m[ i]) else k:=abs(sr-m[ j]); if k=5 then begin inc(z); if sr<min then min:=sr; end; end; end; write(z,' ',min); end. [/pre2]




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