Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. #/usr/bin/env python3
  2. # coding: utf-8
  3.  
  4. a = [1, 2, 3, 4, -5, 6, -7, -8] # even count = 4, odd count = 4
  5.  
  6. def odd_count(arr):
  7.     """
  8.    Идея - просто прибавлять модуль остатка от деления на 2, так как
  9.    у нечетных чисел он всегда будет равен 1, а у четных - 0.
  10.    """
  11.     count = 0
  12.     for n in arr:
  13.         count += abs(n % 2)
  14.     return count
  15.  
  16. def even_count(arr):
  17.     """
  18.    Здесь концепция схожа с той, что исползуется в odd_count(), но теперь
  19.    нам нужно "инвертировать" остаток, то есть если он получился 0, то сделать
  20.    его 1 и наоборот.
  21.    """
  22.     count = 0
  23.     for n in arr:
  24.         remainder = abs(n % 2)
  25.         # если n - четное, то ((n % 2) + 1) % 2 = (0 + 1) % 2 = 1,
  26.         # иначе ((n % 2) + 1) % 2 = (1 + 1) % 2 = 0.
  27.         count += (remainder + 1) % 2
  28.     return count
  29.  
  30. print(odd_count(a))
  31. print(even_count(a))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement