The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by amanovmaulen172, 2021-12-17 11:13:49

5-sabak Python

5-sabak Python

3-апта.




5-сабақ. (15.06.2021)

1. Алдыңғы 2-тапсырманы талқылау
2. Олимпиада 2-апта талқылау
3. Биттік операциялар (&,|,^,~)
4. import operators (add, sub, mul, pow, xor, ...)
5. import itertools (

chain
accumulate
compress
starmap
product
permutations
combinations
6. Practices

1) Алдыңғы 2-тапсырманы талқылау

A. Подсчёт функции https://codeforces.com/problemset/problem/486/A
(https://codeforces.com/problemset/problem/486/A)
A. Трамвай https://codeforces.com/problemset/problem/116/A (https://codeforces.com/problemset/problem/116/A)

In [1]: # Подсчёт функции
n=int(input())
if n%2==0:
print(n//2)
else:
print(n//2-n)

5

-3


In [2]: # Трамвай
n=int(input())
s=0
c=[]
for i in range(n):
a,b=map(int,input().split())
s-=a
s+=b
c.append(s)
print(max(c))

3

0 4

3 10

11 0

11


2) Олимпиада (1-апта) 5 есепті талқылау

A. Антон и Даник

https://codeforces.com/gym/332098/problem/A (https://codeforces.com/gym/332098/problem/A)

In [3]: # A. Антон и Даник
input()
s = input()
a = s.count('A')
d = s.count('D')
if a>d:
print('Anton')
elif a==d:
print('Friendship')
else:
print('Danik')

6

AAADDA

Anton


B. Театральная площадь

https://codeforces.com/gym/332098/problem/B (https://codeforces.com/gym/332098/problem/B)

In [4]: # B. Театральная площадь
n,m,a=map(int,input().split())
if m%a==0:
s=m//a
else:
s=m//a+1

if n%a==0:
d=n//a

else:
d=n//a+1

print(s*d)

6 6 4

4


In [5]: # B. Театральная площадь
from math import ceil
n,m,a=map(int,input().split())
print(ceil(n/a)*ceil(m/a))

6 6 4

4


In [6]: # B. Театральная площадь
n,m,a=map(int,input().split())
print(-n//a*(-m//a))

6 6 4

4


In [7]: n = 11
a=4
print(n//a,n%a,n/a)
print(-n//a,-n%a,-n/a)

2 3 2.75

-3 1 -2.75


C. Напитки

https://codeforces.com/gym/332098/problem/C (https://codeforces.com/gym/332098/problem/C)

In [8]: # C. Напитки
n = int(input())
a=list(map(int,input().split()))
print(sum(a)/n)
4

0 25 50 75

37.5


D. Капитализация слова

https://codeforces.com/gym/332098/problem/D (https://codeforces.com/gym/332098/problem/D)

In [9]: # D. Капитализация слова
s = input()
print(s[0].upper()+s[1:])
apPle

ApPle


E. Следующий раунд

https://codeforces.com/gym/332098/problem/E (https://codeforces.com/gym/332098/problem/E)

In [10]: # E. Следующий раунд
n,k=map(int,input().split())
l=list(map(int,input().split()))
c=0
for i in range(len(l)):
#if l[i]>=l[k-1] and l[i]>0:
if 0<l[i]>=l[k-1]:
c+=1
print(c)
5 5

1 1 1 0 0

3


3) Биттік операциялар

& - and

In [11]: a = 15
b=8
print(bin(a))
print(bin(b))
print('------')
print(bin(a&b))
print(a&b)

0b1111

0b1000

------

0b1000

8


In [12]: a = 10
b=1
print(bin(a))
print(bin(b))
print('------')
print(bin(a&b))
print(a&b)

0b1010

0b1

------

0b0

0


| - or

In [13]: a = 15
b=8
print(bin(a))
print(bin(b))
print('------')
print(bin(a|b))
print(a|b)

0b1111

0b1000

------

0b1111

15


In [14]: a = 10
b=1
print(bin(a))
print(bin(b))
print('------')
print(bin(a|b))
print(a|b)

0b1010

0b1

------

0b1011

11


^ - xor

In [15]: a = 15
b=8
print(bin(a))
print(bin(b))
print('------')
print(bin(a^b))
print(a^b)

0b1111

0b1000

------

0b111

7


In [16]: a = 10
b=1
print(bin(a))
print(bin(b))
print('------')
print(bin(a^b))
print(a^b)

0b1010

0b1

------

0b1011

11


>> - Битті оң жаққа жылжыту

In [17]: a = 10
b = 1 # 1-orynga jyljytu
print(bin(a))
print(bin(a>>b))
print(a>>b)

0b1010

0b101

5


In [18]: a = 10
b = 3 # 3-orynga jyljytu
print(bin(a))
print(bin(a>>b))
print(a>>b)

0b1010

0b1

1


In [19]: a = 10
b = 10 # 10-orynga jyljytu
print(bin(a))
print(bin(a>>b))
print(a>>b)

0b1010

0b0

0


>> - Битті солға жаққа жылжыту

In [20]: a = 10
b = 1 # 1-orynga jyljytu
print(bin(a))
print(bin(a<<b))
print(a<<b)

0b1010

0b10100

20


In [21]: a = 10
b = 4 # 4-orynga jyljytu
print(bin(a))
print(bin(a<<b))
print(a<<b)

0b1010

0b10100000

160


In [22]: a = 10
b = 10 # 10-orynga jyljytu
print(bin(a))
print(bin(a<<b))
print(a<<b)

0b1010

0b10100000000000

10240


~ - NOT

In [23]: a = 7
print(bin(a))
print(bin(~a))
print(~a)

0b111

-0b1000

-8


In [24]: a = 1
print(bin(a))
print(bin(~a))
print(~a)

0b1

-0b10

-2


In [25]: a = -1
print(bin(a))
print(bin(~a))
print(~a)

-0b1

0b0

0


4) import operators (add, sub, mul, pow, xor, ...)

In [26]: import operator

a,b = 23,9

print(operator.add(a,b)) # a+b

print(operator.sub(a,b)) # a-b

print(operator.mul(a,b)) # a*b

print(operator.pow(a,b)) # a**b

print(operator.truediv(a,b)) # a/b

print(operator.floordiv(a,b)) # a//b

print(operator.mod(a,b)) # a%b

32

14

207

1801152661463

2.5555555555555554

2

5


In [27]: from operator import *

a,b = 23,9

print(add(a,b)) # a+b

print(sub(a,b)) # a-b

print(mul(a,b)) # a*b

print(pow(a,b)) # a**b

print(truediv(a,b)) # a/b

print(floordiv(a,b)) # a//b

print(mod(a,b)) # a%b

32

14

207

1801152661463

2.5555555555555554

2

5


In [28]: import operator # a<b
a,b = 23,9 # a<=b
print(operator.lt(a,b)) # a==b
print(operator.le(a,b)) # a!=b
print(operator.eq(a,b)) # a>=b
print(operator.ne(a,b)) # a>b
print(operator.ge(a,b))
print(operator.gt(a,b))

False

False

False

True

True

True


In [29]: import operator # a^b
a,b = 23,9 # a&b
print(operator.xor(a,b)) # a&b
print(operator.and_(a, b)) # ~a
print(operator.or_(a, b)) # a>>b
print(operator.invert(a)) # a<<b
print(operator.lshift(a, b))
print(operator.rshift(a, b))

30

1

31

-24

11776

0

4) import itertools

chain()

In [30]: # iteration tools -> itertools
import itertools
a = ['ABCDEF','123456','!@#$%^','abcdef']
b = itertools.chain(*a)
print(*b)

A B C D E F 1 2 3 4 5 6 ! @ # $ % ^ a b c d e f


In [31]: from itertools import chain
a = ['aabcde','abacde','aaade','daf']
b = chain(*a)
print(*b)
c = set(chain(*a))
print(*sorted(c))

a a b c d e a b a c d e a a a d e d a f

a b c d e f


accumulate()

In [32]: from itertools import accumulate
a = ['aabcde','abacde','aaade','daf']
b = accumulate(a)
print(*b)

aabcde aabcdeabacde aabcdeabacdeaaade aabcdeabacdeaaadedaf


In [33]: from itertools import accumulate
a = [1,2,3,4,5,6,7]
b = accumulate(a)
print(*b)

1 3 6 10 15 21 28


In [34]: from itertools import accumulate
import operator
a = [1,2,3,4,5,6,7]
b = accumulate(a,operator.mul)
print(*b)

1 2 6 24 120 720 5040


In [35]: from itertools import accumulate
import operator
a = [1,2,3,4,5,6,7]
b = accumulate(a,operator.mul)
print(*b)

1 2 6 24 120 720 5040


In [36]: from itertools import accumulate
import operator
a = [1,2,3,4,5,6,7]
b = accumulate(a,operator.xor)
print(*b)

1 3 0 4 1 7 0

In [37]: from itertools import accumulate
import operator
a = [10,1,2,3,4,5,6,7]
b = accumulate(a,operator.le) # a>=b
print(*b)

10 False True True True True True True


compress()

In [38]: from itertools import compress
a = [1,2,3,4,5,6,7]
c = [1,0,0,1,1,1,0]
b = compress(a,c)
print(*b)

1 4 5 6


In [39]: from itertools import compress
s = 'Kazakhstan'
a = [1,0]*6
print(a)
b = compress(s,a)
print(s)
print(*b)

[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]

Kazakhstan

K z k s a


starmap() - map() by functions

In [40]: s = "Alga Kazakhstan! Alga!"
a = list(map(str,s.split()))
print(a)

['Alga', 'Kazakhstan!', 'Alga!']


In [41]: s = "123 23 5 543 34 435"
a = list(map(int,s.split()))
print(a)

[123, 23, 5, 543, 34, 435]


In [42]: from itertools import starmap
a = [[1,234,123],[324,23,-11],[3453,23,45]]
b = starmap(max,a)
print(*b)

234 324 3453


In [43]: from itertools import starmap
a = [[5,2],[2,5],[10,9]]
b = starmap(pow,a)
print(*b)

25 32 1000000000


In [44]: from itertools import starmap
import operator
a = [[5,2],[2,5],[10,9]]
b = starmap(operator.xor,a)
print(*b)

7 7 3

In [45]: from itertools import starmap

def myFunc(a,b):
return (a*a+b*b)**0.5

a = [[5,2],[2,5],[10,9]]
b = starmap(myFunc,a)
print(*b)

5.385164807134504 5.385164807134504 13.45362404707371


product()

In [46]: a = 'abc' # ['a','b','c']
b = '1234' # ['1','2','3','4']
c = []
for i in a:
for j in b:
c.append([i,j])
print(c)
print(len(c))

[['a', '1'], ['a', '2'], ['a', '3'], ['a', '4'], ['b', '1'], ['b', '2'], ['b', '3'], ['b',
'4'], ['c', '1'], ['c', '2'], ['c', '3'], ['c', '4']]

12


In [47]: from itertools import product
a = 'abc' # ['a','b','c']
b = '1234' # ['1','2','3','4']
c = list(product(a,b))
print(*c)
print(len(c))

('a', '1') ('a', '2') ('a', '3') ('a', '4') ('b', '1') ('b', '2') ('b', '3') ('b', '4') ('c',
'1') ('c', '2') ('c', '3') ('c', '4')

12


In [48]: a = ['abc','123','XYZ','-+']
b = []
for i in a[0]:
for j in a[1]:
for k in a[2]:
for l in a[3]:
b.append([i,j,k,l])
print(*b)
print(len(b))

['a', '1', 'X', '-'] ['a', '1', 'X', '+'] ['a', '1', 'Y', '-'] ['a', '1', 'Y', '+'] ['a', '1',
'Z', '-'] ['a', '1', 'Z', '+'] ['a', '2', 'X', '-'] ['a', '2', 'X', '+'] ['a', '2', 'Y', '-']
['a', '2', 'Y', '+'] ['a', '2', 'Z', '-'] ['a', '2', 'Z', '+'] ['a', '3', 'X', '-'] ['a', '3',
'X', '+'] ['a', '3', 'Y', '-'] ['a', '3', 'Y', '+'] ['a', '3', 'Z', '-'] ['a', '3', 'Z', '+']
['b', '1', 'X', '-'] ['b', '1', 'X', '+'] ['b', '1', 'Y', '-'] ['b', '1', 'Y', '+'] ['b', '1',
'Z', '-'] ['b', '1', 'Z', '+'] ['b', '2', 'X', '-'] ['b', '2', 'X', '+'] ['b', '2', 'Y', '-']
['b', '2', 'Y', '+'] ['b', '2', 'Z', '-'] ['b', '2', 'Z', '+'] ['b', '3', 'X', '-'] ['b', '3',
'X', '+'] ['b', '3', 'Y', '-'] ['b', '3', 'Y', '+'] ['b', '3', 'Z', '-'] ['b', '3', 'Z', '+']
['c', '1', 'X', '-'] ['c', '1', 'X', '+'] ['c', '1', 'Y', '-'] ['c', '1', 'Y', '+'] ['c', '1',
'Z', '-'] ['c', '1', 'Z', '+'] ['c', '2', 'X', '-'] ['c', '2', 'X', '+'] ['c', '2', 'Y', '-']
['c', '2', 'Y', '+'] ['c', '2', 'Z', '-'] ['c', '2', 'Z', '+'] ['c', '3', 'X', '-'] ['c', '3',
'X', '+'] ['c', '3', 'Y', '-'] ['c', '3', 'Y', '+'] ['c', '3', 'Z', '-'] ['c', '3', 'Z', '+']

54

In [49]: a = ['abc','123','XYZ','-+']
b = []
for i in a[0]:
for j in a[1]:
for k in a[2]:
for l in a[3]:
b.append(i+j+k+l) # b.append(''.join([i,j,k,l]))
print(*b)
print(len(b))

a1X- a1X+ a1Y- a1Y+ a1Z- a1Z+ a2X- a2X+ a2Y- a2Y+ a2Z- a2Z+ a3X- a3X+ a3Y- a3Y+ a3Z- a3Z+ b1X-
b1X+ b1Y- b1Y+ b1Z- b1Z+ b2X- b2X+ b2Y- b2Y+ b2Z- b2Z+ b3X- b3X+ b3Y- b3Y+ b3Z- b3Z+ c1X- c1X+
c1Y- c1Y+ c1Z- c1Z+ c2X- c2X+ c2Y- c2Y+ c2Z- c2Z+ c3X- c3X+ c3Y- c3Y+ c3Z- c3Z+

54


In [50]: from itertools import product
a = ['abc','123','XYZ','-+']
b = list(product(*a))
print(*b)
print(len(b))

('a', '1', 'X', '-') ('a', '1', 'X', '+') ('a', '1', 'Y', '-') ('a', '1', 'Y', '+') ('a', '1',
'Z', '-') ('a', '1', 'Z', '+') ('a', '2', 'X', '-') ('a', '2', 'X', '+') ('a', '2', 'Y', '-')
('a', '2', 'Y', '+') ('a', '2', 'Z', '-') ('a', '2', 'Z', '+') ('a', '3', 'X', '-') ('a', '3',
'X', '+') ('a', '3', 'Y', '-') ('a', '3', 'Y', '+') ('a', '3', 'Z', '-') ('a', '3', 'Z', '+')
('b', '1', 'X', '-') ('b', '1', 'X', '+') ('b', '1', 'Y', '-') ('b', '1', 'Y', '+') ('b', '1',
'Z', '-') ('b', '1', 'Z', '+') ('b', '2', 'X', '-') ('b', '2', 'X', '+') ('b', '2', 'Y', '-')
('b', '2', 'Y', '+') ('b', '2', 'Z', '-') ('b', '2', 'Z', '+') ('b', '3', 'X', '-') ('b', '3',
'X', '+') ('b', '3', 'Y', '-') ('b', '3', 'Y', '+') ('b', '3', 'Z', '-') ('b', '3', 'Z', '+')
('c', '1', 'X', '-') ('c', '1', 'X', '+') ('c', '1', 'Y', '-') ('c', '1', 'Y', '+') ('c', '1',
'Z', '-') ('c', '1', 'Z', '+') ('c', '2', 'X', '-') ('c', '2', 'X', '+') ('c', '2', 'Y', '-')
('c', '2', 'Y', '+') ('c', '2', 'Z', '-') ('c', '2', 'Z', '+') ('c', '3', 'X', '-') ('c', '3',
'X', '+') ('c', '3', 'Y', '-') ('c', '3', 'Y', '+') ('c', '3', 'Z', '-') ('c', '3', 'Z', '+')

54


In [51]: from itertools import product,starmap

def myJoin(*a):
return ''.join(a)

a = ['abc','123','XYZ','-+']
b = list(product(*a))
print(*starmap(myJoin,b))
print(len(b))

a1X- a1X+ a1Y- a1Y+ a1Z- a1Z+ a2X- a2X+ a2Y- a2Y+ a2Z- a2Z+ a3X- a3X+ a3Y- a3Y+ a3Z- a3Z+ b1X-
b1X+ b1Y- b1Y+ b1Z- b1Z+ b2X- b2X+ b2Y- b2Y+ b2Z- b2Z+ b3X- b3X+ b3Y- b3Y+ b3Z- b3Z+ c1X- c1X+
c1Y- c1Y+ c1Z- c1Z+ c2X- c2X+ c2Y- c2Y+ c2Z- c2Z+ c3X- c3X+ c3Y- c3Y+ c3Z- c3Z+

54


In [52]: from itertools import product
a = list(product('ABCD',repeat = 2))
print(*a)
print(len(a))

('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'A') ('B', 'B') ('B', 'C') ('B', 'D') ('C',
'A') ('C', 'B') ('C', 'C') ('C', 'D') ('D', 'A') ('D', 'B') ('D', 'C') ('D', 'D')

16


In [53]: from itertools import product
a = list(product('ABCD','ABCD'))
print(*a)
print(len(a))

('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'A') ('B', 'B') ('B', 'C') ('B', 'D') ('C',
'A') ('C', 'B') ('C', 'C') ('C', 'D') ('D', 'A') ('D', 'B') ('D', 'C') ('D', 'D')

16


permutations

permutations

In [54]: from math import factorial as f
s = 'abcde'
n = len(s)
r = 2 # ab ac ad ae ...
P = f(n)//f(n-r)
print(P)

20


In [55]: s = 'abcde'
c=0
for i in range(len(s)):
for j in range(len(s)):
if i!=j:
print(s[i]+s[j],end=' ')
c+=1
print()
print(c)

ab ac ad ae

ba bc bd be

ca cb cd ce

da db dc de

ea eb ec ed

20


In [56]: s = 'abcde'
a = []
b = []
for i in s:
for k in s:
if i!=k:
a.append([i,k])
b.append(i+k)
print(*a)
print(*b)
print(len(a))

['a', 'b'] ['a', 'c'] ['a', 'd'] ['a', 'e'] ['b', 'a'] ['b', 'c'] ['b', 'd'] ['b', 'e'] ['c',
'a'] ['c', 'b'] ['c', 'd'] ['c', 'e'] ['d', 'a'] ['d', 'b'] ['d', 'c'] ['d', 'e'] ['e', 'a']
['e', 'b'] ['e', 'c'] ['e', 'd']

ab ac ad ae ba bc bd be ca cb cd ce da db dc de ea eb ec ed

20

In [57]: from itertools import permutations
s = 'abcde'
a = list(permutations(s,2))
print(*a)
print(len(a))

('a', 'b') ('a', 'c') ('a', 'd') ('a', 'e') ('b', 'a') ('b', 'c') ('b', 'd') ('b', 'e') ('c',
'a') ('c', 'b') ('c', 'd') ('c', 'e') ('d', 'a') ('d', 'b') ('d', 'c') ('d', 'e') ('e', 'a')
('e', 'b') ('e', 'c') ('e', 'd')

20


In [58]: from itertools import permutations,starmap

def myJoin(*a):
return ''.join(a)

s = 'abcde'
a = list(permutations(s,2))
print(*starmap(myJoin,a))
print(len(a))

ab ac ad ae ba bc bd be ca cb cd ce da db dc de ea eb ec ed

20


In [59]: from math import factorial as f
s = 'abcde'
n = len(s)
r = 3 # abc abd abe ...
P = f(n)//f(n-r)
print(P)

60


In [60]: from itertools import permutations
s = 'abcde'
a = list(permutations(s,3))
print(*starmap(myJoin,a))
print(len(a))

abc abd abe acb acd ace adb adc ade aeb aec aed bac bad bae bca bcd bce bda bdc bde bea bec be
d cab cad cae cba cbd cbe cda cdb cde cea ceb ced dab dac dae dba dbc dbe dca dcb dce dea deb
dec eab eac ead eba ebc ebd eca ecb ecd eda edb edc

60


In [61]: from math import factorial as f
s = 'abcde'
n = len(s)
r = 4 # abcd abce ...
P = f(n)//f(n-r)
print(P)

120


In [62]: from itertools import permutations
s = 'abcde'
a = list(permutations(s,4))
print(*starmap(myJoin,a))
print(len(a))

abcd abce abdc abde abec abed acbd acbe acdb acde aceb aced adbc adbe adcb adce adeb adec aebc
aebd aecb aecd aedb aedc bacd bace badc bade baec baed bcad bcae bcda bcde bcea bced bdac bdae
bdca bdce bdea bdec beac bead beca becd beda bedc cabd cabe cadb cade caeb caed cbad cbae cbda
cbde cbea cbed cdab cdae cdba cdbe cdea cdeb ceab cead ceba cebd ceda cedb dabc dabe dacb dace
daeb daec dbac dbae dbca dbce dbea dbec dcab dcae dcba dcbe dcea dceb deab deac deba debc deca
decb eabc eabd eacb eacd eadb eadc ebac ebad ebca ebcd ebda ebdc ecab ecad ecba ecbd ecda ecdb
edab edac edba edbc edca edcb

120


combination

In [63]: from math import factorial as f
s = 'abcde'
n = len(s)
r = 2 # ab ac ad ae ... (ba sanalmaidy)
C = f(n)//(f(r)*f(n-r))
print(C)

10


In [64]: s = 'abcde'
c=0
for i in range(len(s)):
for j in range(i+1,len(s)):
print(s[i]+s[j],end=' ')
c+=1
print()
print(c)

ab ac ad ae

bc bd be

cd ce

de


10


In [65]: from itertools import combinations
s = 'abcde'
a = list(combinations(s,2))
print(*starmap(myJoin,a))
print(len(a))

ab ac ad ae bc bd be cd ce de

10


In [66]: from itertools import combinations
s = 'abcde'
a = list(combinations(s,3))
print(*starmap(myJoin,a))
print(len(a))

abc abd abe acd ace ade bcd bce bde cde

10


In [67]: from math import factorial as f
s = 'abcde'
n = len(s)
r = 3 # abc abd abe acd ...
C = f(n)//(f(r)*f(n-r))
print(C)

10

In [68]: from math import factorial as f
s = 'abcde'
n = len(s)
r = 4 # abcd abce abde acde bcde
C = f(n)//(f(r)*f(n-r))
print(C)

5


In [69]: from itertools import combinations
s = 'abcde'
a = list(combinations(s,4))
print(*starmap(myJoin,a))
print(len(a))

abcd abce abde acde bcde

5


In [70]: from math import factorial as f
s = 'Kazakhstan'
n = len(s)
r=8
P = f(n)//f(n-r)
C = f(n)//(f(r)*f(n-r))
print('Permutaions:',P)
print('Combinations:',C)

from itertools import combinations
a = list(combinations(s,r))
print(*starmap(myJoin,a))
print(len(a))

Permutaions: 1814400

Combinations: 45

Kazakhst Kazakhsa Kazakhsn Kazakhta Kazakhtn Kazakhan Kazaksta Kazakstn Kazaksan Kazaktan Kaza
hsta Kazahstn Kazahsan Kazahtan Kazastan Kazkhsta Kazkhstn Kazkhsan Kazkhtan Kazkstan Kazhstan
Kaakhsta Kaakhstn Kaakhsan Kaakhtan Kaakstan Kaahstan Kakhstan Kzakhsta Kzakhstn Kzakhsan Kzak
htan Kzakstan Kzahstan Kzkhstan Kakhstan azakhsta azakhstn azakhsan azakhtan azakstan azahstan
azkhstan aakhstan zakhstan

45


6) Practics

https://codeforces.com/contests/332515 (https://codeforces.com/contests/332515)

In [ ]: ​


Click to View FlipBook Version