Skip to content

Instantly share code, notes, and snippets.

@kitten-owner
Last active March 24, 2021 11:52
Show Gist options
  • Select an option

  • Save kitten-owner/6cb64d91c65de5494d17b3ed728976b0 to your computer and use it in GitHub Desktop.

Select an option

Save kitten-owner/6cb64d91c65de5494d17b3ed728976b0 to your computer and use it in GitHub Desktop.
#Имеется набор данных, состоящий из пар положительных целых чисел.
#Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была
#максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную
#сумму, соответствующую условиям задачи.
with open("27/1/27-1b.txt", "r") as f:
n = int(f.readline()) # Считываем перввую строку в которой указано кол-во пар чисел
s = 0 # Это переменная - наша сумма
A = [] # Это список, куда будет помещаться разность пары чисел
for i in range(n):
x, y = map(int, f.readline().split()) # Считываем пару чисел из каждой строчки
s = s + max(x, y) # Находим максимальную сумму
raz = abs(x - y) # Находим разность чисел в паре
if raz % 3 != 0: # Просписываем, чтобы разность не была кратана 3, ибо тогда счёт будет неверным
A.append(raz) # Добавляем разницу в список
A.sort() # Сортируем список
if s % 3 != 0: # Если max сумма и так не делится на 3 то выводим её (что наврят-ли будет)
print(s)
else:
# Далее идёт перебор в ходе которого, от max суммы будет одняться разность,
# до такого моента пока она не станет не кратной 3
q = 0
for i in range(len(A)):
while s % 3 == 0:
s = s - A[q]
if s % 3 != 0:
print(s)
else:
q += 1
#Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма в
#сех выбранных чисел не делилась на 3 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно.
#Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи.
with open("27/1/27-1b.txt", "r") as f:
n = int(f.readline())
s = 0
A = []
for i in range(n):
x, y = map(int, f.readline().split())
s += min(x, y)
raz = abs(x - y)
if raz % 3 != 0:
A.append(raz)
A.sort()
if s%3!=0:
print(s)
else:
q = 0
for i in range(len(A)):
while s%3==0:
s = s + A[q]
if s%3!=0:
print(s)
else:
q+=1
#Имеется набор данных, состоящий из пар положительных целых чисел.
#Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 3
#и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно.
#Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
with open("27/2/27-2a.txt", "r") as f:
n = int(f.readline())
s = 0
A=[]
for i in range(n):
x, y = map(int, f.readline().split())
s = s + max(x, y)
raz = abs(x - y)
A.append(raz)
A.sort()
if s % 3 == 0:
print(s)
else:
q=0
for i in range(len(A)):
while s%3!=0:
s = s - A[q]
if s%3==0:
print(s)
else:
q+=1
#Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так,
#чтобы сумма всех выбранных чисел делилась на 3 и при этом была минимально возможной. Гарантируется,
#что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям за-дачи.
with open("27/3/27-3b.txt", "r") as f:
n = int(f.readline())
s = 0
A = []
for i in range(n):
x, y = map(int, f.readline().split())
s = s + min(x, y)
raz = abs(x - y)
A.append(raz)
A.sort()
if s % 3 == 0:
print(s)
else:
q = 0
for i in range(len(A)):
while s % 3 != 0:
s = s + A[q]
if s % 3 == 0:
print(s)
else:
q += 1
#Имеется набор данных, состоящий из положительных целых чисел, каждое из которых не превышает 1000.
#Требуется найти для этой последовательности контрольное значение – наи-большее число R, удовлетворяющее следующим условиям:
#– R – произведение двух различных переданных элементов последовательности («различные» означает,
#что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются);
#– R делится на 6.
f = open("27/6/27-6b.txt")
n = int(f.readline())
#Произведение двух чисел делится на 6, если:
#— один из сомножителей делится на 6 (второй может быть любым)
#— ни один из сомножителей не делится на 6, но один из сомножителей делится на 3, а другой – на 2
maxX = 0 # - самое большое число среди всех элементов последовательности
# ( также может быть если max6 > maxX, то maxX = max6 )
max6 = 0 # - самое большое число, кратное 6;
max3 = 0 # - самое большое число, кратное 3, но не кратное 2
max2 = 0 # - самое большое число, кратное 2, но не кратное 3
for i in range(n):
x = int(f.readline())
if x % 6 == 0 and x > max6:
max6 = x
if max6 > maxX:
maxX = max6
else:
if x > maxX:
maxX = x
if x % 2 == 0 and x > max2:
max2 = x
elif x % 3 == 0 and x > max3:
max3 = x
R = max( max6*maxX, max2*max3 ) # Находим максимальное R
print( R )
# Для наглядной проверки наши выводим максимальные значения
print( max6, maxX, max6*maxX )
print( max2, max3, max2*max3 )
#Имеется набор данных, состоящий из положительных целых чисел, каждое из которых не превышает 1000.
#Требуется найти для этой последовательности контрольное значение – наи-большее число R, удовлетворяющее следующим условиям:
#– R – произведение двух различных переданных элементов последовательности
#(«различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются);
#– R делится на 7 и не делится на 49.
f = open("27/7/27-7a.txt")
n = int(f.readline())
max7 = 0
maxX = 0
for i in range(n):
x = int(f.readline())
if x > max7 and x % 7 == 0 and x % 49 != 0:
max7 = x
if x % 7 != 0 and x > maxX:
maxX = x
R = max7 * maxX
if R == 0:
R = 1
print(R)
print(max7, maxX)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment