Автор | Сообщение |
|
Отправлено: 15.05.21 22:13. Заголовок: 27-2692
Здравствуйте. Не понимаю, почему программа выдаёт неправильный ответ. f=open('27-b.txt') d=int(f.readline()) csum=0 r=0 df=0 s=['1000001']*11 for i in range (d): a,b,c=map(int, f.readline().split()) csum+=min(a,b,c) r=a+b+c-max(a,b,c)-2*min(a,b,c) for j in range (11): df=int(s[j]) if r%11==j and r<df: s[j]=r if csum%11==0: print (csum) else: for j in range (11): df=int(s[j]) if (j+(csum%11))%11==0: print(csum+df)
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Сообщение: 2805
|
|
Отправлено: 18.05.21 19:03. Заголовок: Это задача 27.32 из ..
Это задача 27.32 из основного сборника. Попробуйте посмотреть авторское решение и сравнить со своим.
|
|
|
|
Отправлено: 23.05.21 12:41. Заголовок: Здравствуйте. Не мог..
Здравствуйте. Не могу понять, почему программа выдает правильный ответ для файла 27-32b.txt и для тестового файла из условия задачи, а для файла 27-32a.txt выдает ответ 5907 (при правильном указанном 5896). В чем ошибка? f = open('27-32a.txt') n = int(f.readline()) m = [] s = 0 for i in range(n): a = list(map(int, f.readline().split())) a.sort() m.append(a[2]-a[0]) m.append(a[1]-a[0]) s = s + a[0] #print(m) print(s) #print(sorted(m)) if s % 11 == 0: print(s) else: m.sort() k = 0 while (s + m[k]) % 11 != 0: k += 1 print(s + m[k])
|
|
|
|
| Администратор
|
Сообщение: 2816
|
|
Отправлено: 23.05.21 22:15. Заголовок: Попробуйте сравнить ..
Попробуйте сравнить свое решение с авторским. Или прочитать разбор задачи 27.Р-01. Дело в том, что оптимальное решение может быть получено несколькими заменами. Ваш алгоритм этого не учитывает.
|
|
|
|
Отправлено: 24.05.21 15:29. Заголовок: Поляков пишет: Ваш ..
Поляков пишет: цитата: | Ваш алгоритм этого не учитывает. |
| Понятно. Заменять можно несколько чисел в тройках. Спасибо большое.
|
|
|
|