Задача #3479
Обработка массивов
(О. Лысенков) В файле содержится последовательность натуральных чисел, не превышающих 100 000. Определите количество пар последовательности, в которых выполняется ровно одно из двух условий: ровно один элемент кратен 5 и одновременно не кратен 3 или ровно один элемент кратен 9. В ответе запишите количество найденных пар, а после разницу между количеством пар, для которых выполняется только первое условие и для которых выполняется только второе условие. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
3736
320
#1 способ
f = open('17.txt')
a = [int(i) for i in f]
count = 0
c1 = 0
c2 = 0
def f1(a,b):
return ((a % 5 == 0 and a % 3 != 0) + (b % 5 == 0 and b % 3 != 0)) == 1
def f2(a,b):
return ((a % 9 == 0) + (b % 9 == 0)) == 1
for i in range(len(a) - 1):
if (f1(a[i],a[i + 1]) + f2(a[i],a[i + 1])) == 1:
count += 1
if (f1(a[i],a[i + 1])):
c1 += 1
else:
c2 += 1
print(count,abs(c1 - c2))
#2 способ
f = open('17.txt')
a = [int(i) for i in f]
count = 0
c1 = 0
def f1(a,b):
return ((a % 5 == 0 and a % 3 != 0) + (b % 5 == 0 and b % 3 != 0)) == 1
def f2(a,b):
return ((a % 9 == 0) + (b % 9 == 0)) == 1
for i in range(len(a) - 1):
if (f1(a[i],a[i + 1]) + f2(a[i],a[i + 1])) == 1:
count += 1
if (f1(a[i],a[i + 1])):
c1 += 1
print(count,abs(count - c1 - c1)) #количество всего подходящих пар минус количество пар, для которых
#выполняется первое условие равно количеству пар, для которых выполняется второе условие, так как
#count = c1 + c2