---
# System prepended metadata

title: Snakify ANS

---

tags: `Python`

Snakify ANS
===========

[SNAKIFY](https://snakify.org/en/)

[ ](#CHAPTER-1 "CHAPTER-1")CHAPTER 1
------------------------------------

### [ ](#Sum-of-three-numbers "Sum-of-three-numbers")Sum of three numbers

```javascript=
a = int(input())
b = int(input())
c = int(input())
print(a + b + c)
```

> **後記:** input()出來是字串，要轉形

### [ ](#Hi-John "Hi-John")Hi John

```javascript=
a=input()
print("Hi ",a)
```
> **後記:** Python的print預設是間隔一空白(如果要改預設可用sep 或+ 處理)，並換行

### [ ](#Square "Square")Square

```javascript=
a= int(input())
print(a*a)
```

### [ ](#Area-of-right-angled-triangle "Area-of-right-angled-triangle")Area of right-angled triangle

```javascript=
b = int(input())
h = int(input())
print ( b*h/2 )
```

> **後記:** Python這樣出來可以是float，不須管形別轉換，但C++要注意會不會強制轉換

### [ ](#Hello-Harry "Hello-Harry")Hello, Harry!

```javascript=
name = input()
print("Hello",name,"!",sep='')
```

> **後記:** 2行可改成 `print('Hello, ' + input() + '!')`

### [ ](#Apple-sharing "Apple-sharing")Apple sharing

```javascript=
n = int(input())
K = int(input())
print(K//n)
print(K%n)
```

> **後記:**   `//`是整除

### [ ](#Previous-and-next "Previous-and-next")Previous and next

```javascript=
a= int(input())
print("The next number for the number",a,"is",a+1)
print("The previous number for the number",a,"is",a-1)
```

### [ ](#Two-timestamps "Two-timestamps")Two timestamps

```javascript=
a=int(input())
b=int(input())
c=int(input())
d=int(input())
e=int(input())
f=int(input())
print((d-a)*60*60+(e-b)*60+(f-c))
```

### [ ](#School-desks "School-desks")School desks

```javascript=
import math
sum=0
for i in range(3):
    a=int(input())
    a=math.ceil(a/2) 
    sum=a+sum
print(sum)
```

CHAPTER 2
---------

### [ ](#Last-digit-of-integer "Last-digit-of-integer")Last digit of integer

```javascript=
a=int(input())
print(a%10)
```

### [ ](#Tens-digit "Tens-digit")Tens digit

```javascript=
print(int(int(input())/10)%10)
```

### [ ](#Sum-of-digits "Sum-of-digits")Sum of digits

#### [ ](#正常解法 "正常解法")正常解法

```javascript=
a= int(input())
frist=int(a/100)
second=int((a-frist*100)/10)
third=a%10
print(frist+second+third)
```

#### [ ](#字串解 "字串解")字串解

```javascript=
a=input()
sum=0
for i in a:
    sum+=ord(i)-48
print(sum)
```

#### [ ](#一行流 "一行流")一行流

```javascript=
print(sum([ord(i)-48 for i in input()]))
```

> **後記:** 可再延伸UVA題目: 10019 - Funny Encryption Method

### [ ](#Fractional-part "Fractional-part")Fractional part

#### [ ](#理想的解法 "理想的解法")理想的解法

```javascript=
a=float(input())
b=int (a)
print(a-b)
```

#### 實際解法

```javascript=
a=input().split(".")
if (len(a)==2):
    print('0.'+a[1])
else:
    print(0)
```

> **後記:** Float不精確，要用字串處理才能得到標準答案

### [ ](#First-digit-after-decimal-point "First-digit-after-decimal-point")First digit after decimal point

#### [ ](#正常解法23 "正常解法23")正常解法

```javascript=
a=float(input())
b=float(int(a))
c=float((a-b)*10)
d=int(c)
print(d)
```

#### [ ](#字串處理 "字串處理")字串處理

```javascript=
a=input()
if( a.find(".")==-1 ):
    print(0)
else:
    print(a[a.find(".")+1])
```

#### [ ](#精簡化 "精簡化")精簡化

```javascript=
a=input()
print( (a[a.find(".")+1],0) [a.find(".")==-1] )
```

### [ ](#Car-route "Car-route")Car route

```javascript=
N=int(input())
M=int(input())
Day=M//N
if (M%N>0):
    Day=Day+1
print(Day)
```

#### [ ](#Snakify-解答 "Snakify-解答")Snakify 解答

```javascript=
import math
N=int(input())
M=int(input())
print(math.ceil(M/N))
```

### [ ](#Digital-clock "Digital-clock")Digital clock

```javascript=
a=int(input())
print(a//60,a%60)
```

### [ ](#Total-cost "Total-cost")Total cost

```javascript=
A=int(input())
B=int(input())
N=int(input())
dollar=(A*100+B)*N
print(dollar//100,dollar%100)
```

> **後記:** Float不精確，改用int方式解

### [ ](#Clock-face---1 "Clock-face---1")Clock face - 1

```javascript=
H=int(input())
M=int(input())
S=int(input())
angle=float(H*30+M/2+S/120)
print(angle)
```

### [ ](#Clock-face---2 "Clock-face---2")Clock face - 2

```javascript=
degree=float(input())
print(degree*12%360)
```

> **後記:** hour hand: min hand = 1 : 12

[ ](#CHAPTER-3 "CHAPTER-3")CHAPTER 3
------------------------------------

### [ ](#Minimum-of-two-numbers "Minimum-of-two-numbers")Minimum of two numbers

```javascript=
a=int(input())
b=int(input())
if (a>b):
    print(b)
else:
    print(a)
```

#### [ ](#簡化 "簡化")簡化

```javascript=
a=int(input())
b=int(input())
print((a,b)[a>b])
```

### [ ](#Sign-function "Sign-function")Sign function

```javascript=
a=int(input())
if(a>0):
    print(1)
elif (a<0):
    print(-1)
else:
    print(0)
```

### [ ](#Minimum-of-three-numbers "Minimum-of-three-numbers")Minimum of three numbers

```javascript=
A=[0,0,0]
A[0]=int(input())
A[1]=int(input())
A[2]=int(input())
for i in range(2):
    if (A[i+1]>A[i]):
        tmp=A[i]
        A[i]=A[i+1]
        A[i+1]=tmp
print(A[2])
```

> **後記:** Python 數值交換可以改成a,b=b,a，以元組形式

### [ ](#Equal-numbers "Equal-numbers")Equal numbers

```javascript=
a=int(input())
b=int(input())
c=int(input())
if (a==b):
    if (b==c):
        print(3)
    else:
        print(2)
elif (b==c):
    if (a==b):
        print(3)
    else:
        print(2)
elif (c==a):
    if (a==b):
        print(3)
    else:
        print(2)
else:
    print(0)
```

### [ ](#Rook-move "Rook-move")Rook move

```javascript=
A=[0,0,0,0]
for i in range(4):
    A[i]=int(input())
if (A[0]==A[2]):
    print("YES")
elif (A[1]==A[3]):
    print("YES")
else:
    print("NO")
```

### [ ](#Chess-board---same-color "Chess-board---same-color")Chess board - same color

```javascript=
A=[0,0,0,0]
for i in range(4):
    A[i]=int(input())
if ((A[0]+A[1])%2 == (A[2]+A[3])%2):
    print("YES")
else:
    print("NO")
```

> **思路:** 同顏色 
> 
>  x+y 奇數(偶數)

### [ ](#King-move "King-move")King move

```javascript=
A=[0,0,0,0]
for i in range(4):
    A[i]=int(input())
if (abs(A[0]-A[2])<=1 and abs(A[1]-A[3])<=1):
    print("YES")
else:
    print("NO")
```

> **後記:** Python可以使用類似數學區間的表達式(-1<=A\[0\]-A\[2\]<=1)但C++不行，請注意

### [ ](#Bishop-moves "Bishop-moves")Bishop moves

```javascript=
A=[0,0,0,0]
for i in range(4):
    A[i]=int(input())
if (abs(A[0]-A[2]) == abs(A[1]-A[3])):
    print("YES")
else:
    print("NO")
```

> **後記:**   `abs()`是取絕對值

### [ ](#Queen-move "Queen-move")Queen move

```javascript=
A=[0,0,0,0]
for i in range(4):
    A[i]=int(input())
if (abs(A[0]-A[2]) == abs(A[1]-A[3])): #斜向移動
    print("YES")
elif (A[0]==A[2]):  #水平移動
    print("YES")
elif (A[1]==A[3]):  #鉛直移動
    print("YES")
else:
    print("NO")
```

### [ ](#Knight-move "Knight-move")Knight move

```javascript=
A=[0,0,0,0]
for i in range(4):
    A[i]=int(input())
a=abs(A[0]-A[2])
b=abs(A[1]-A[3])
if (a==2 and b==1):
    print("YES")
elif (a==1 and b==2):
    print("YES")
else :
    print("NO")
```

### [ ](#Chocolate-bar "Chocolate-bar")Chocolate bar

```javascript=
n=int(input())
m=int(input())
k=int(input())
if ((k%n==0 or k%m==0) and m*n>=k):
    print("YES")
else:
    print("NO")
```

> **後記:** 這題多考慮兩種情況  
> 1.長或寬可以整除所求  
> 2.面積大於所求

### [ ](#Leap-year "Leap-year")Leap year

```javascript=
year=int(input())
if (year%4==0 and year%100!=0):
    print("LEAP")
elif (year%400==0):
    print("LEAP")
else:
    print("COMMON")
```

[ ](#CHAPTER-4 "CHAPTER-4")CHAPTER 4
------------------------------------

:::success
**python for 迴圈**  
1.用陣列執行的  
2.range(起始,最終,累加) –\> 產生的是一個陣列  
3.可用range() & 切片技巧達成類似C++的效果
:::

### Series - 1

```javascript=
a=int(input())
b=int(input())
for i in range (a,b+1):
    print(i)
```

### [ ](#Series---2 "Series---2")Series - 2

```javascript=
a=int(input())
b=int(input())
if (b>=a):
    for i in range(a,b+1):
        print (i)
elif (a>b):
    for i in range(a,b-1,-1):
        print(i)
```

### [ ](#Sum-of-ten-numbers "Sum-of-ten-numbers")Sum of ten numbers

```javascript=
sum=0
for i in range(10):
    a=int(input())
    sum=sum+a
print(sum)
```

### [ ](#Sum-of-N-numbers "Sum-of-N-numbers")Sum of N numbers

```javascript=
N=int(input())
sum=0
for i in range(N):
    a=int(input())
    sum=sum+a
print(sum)
```

### [ ](#Sum-of-cubes "Sum-of-cubes")Sum of cubes

#### [ ](#正常作法 "正常作法")正常作法

```javascript=
N=int(input())
sum=0
for i in range(N+1):
    sum=sum+(i**3)
print(sum)
```

#### [ ](#一行流53 "一行流53")一行流

```javascript=
print(sum(map(lambda x:x**3,range(1,int(input())+1))))
```

> **思路**: 用range()產生list並用map執行迭代，並回傳陣列給sum()並印出總和

### [ ](#Factorial "Factorial")Factorial

#### [ ](#正常做法 "正常做法")正常做法

```javascript=
a=int(input())
b=a
mul=1
for i in range (b):
   mul=mul*a
   a=a-1
print(mul)
```

#### [ ](#遞迴演算法 "遞迴演算法")遞迴演算法

```javascript=
f=lambda x: 1 if x==1 else x*f(x-1)
print( f(int(input())) )
```

### [ ](#The-number-of-zeros "The-number-of-zeros")The number of zeros

```javascript=
sum=0
N=int(input())
for i in range(N):
   a=int(input())
   if (a==0):
       sum=sum+1
print(sum)
```

### [ ](#Adding-factorials "Adding-factorials")Adding factorials

#### [ ](#正常作法59 "正常作法59")正常作法

```javascript=
N=int(input())
sum=0
for i in range(1,N+1,1):
    mul=1 
    for g in range (1,i+1,1):
        mul=mul*g
    sum=sum+mul
print(sum)
```

#### [ ](#一層迴圈做法 "一層迴圈做法")一層迴圈做法

```javascript=
N=int(input())
sum=0
mul=1 
for i in range(1,N+1,1):
    mul=mul*i
    sum=sum+mul
print(sum)
```

#### [ ](#遞迴演算法與Sum-of-Club應用 "遞迴演算法與Sum-of-Club應用")遞迴演算法與Sum of Club應用

```javascript=
f=lambda x: 1 if x==1 else x*f(x-1)
print(sum([f(int(i)) for i in range(1,int(input())+1)]))
```

### [ ](#Ladder "Ladder")Ladder

#### [ ](#正常作法63 "正常作法63")正常作法

```javascript=
N=int(input())
for i in range(1,N+1,1):
    for g in range(1,i+1,1):
        print(g,end="")
    print()
```

#### [ ](#一行流64 "一行流64")一行流

```javascript=
for i in range(1,int(input())+1):print("".join([str(j) for j in range(1,i+1)]))
```

> **思路:** 正常解法簡化即可  
> **後記:**   `join` 只能用`char`,`int`不行

### [ ](#Lost-card "Lost-card")Lost card

#### [ ](#標記解法 "標記解法")標記解法


```javascript=
N=int(input())
A=[i for i in range(1,N+1)]
for i in range(N-1):
    A.remove(int(input()))
print( A[0] )
```

#### [ ](#特殊解 "特殊解")特殊解

```javascript=
N=int(input())
sum=0
for i in range (1,N):
    sum+=int(input())
print(int(N*(1+N)/2-sum))
```

CHAPTER 5
---------

### [ ](#The-number-of-words "The-number-of-words")The number of words

```javascript=
s=input()
print(s[2])
print(s[len(s)-2])
print(s[0:5])
print(s[0:len(s)-2])
print(s[0:len(s):2])
print(s[1:len(s):2])
print(s[-1:-(len(s)+1):-1])
print(s[-1:-(len(s)+1):-2])
print(len(s))
```

### [ ](#The-number-of-words70 "The-number-of-words70")The number of words

```javascript=
a=input().split(" ")
print(len(a))
```

### [ ](#The-two-halves "The-two-halves")The two halves

#### [ ](#Slice "Slice")Slice

```javascript=
a=input()
print(a[(len(a)+1)//2:]+a[:(len(a)+1)//2])
```

#### [ ](#我的解法 "我的解法")我的解法

```javascript=
a=input()
a=list(a)
if (len(a)%2==0):
    for i in range(int(len(a)/2),len(a),1):
        print(a[i],end="")
    for i in range(0,int(len(a)/2),1):
        print(a[i],end="")
else:
    for i in range(int(len(a)/2)+1,len(a),1):
        print(a[i],end="")
    for i in range(0,int(len(a)/2)+1,1):
        print(a[i],end="") 
```

### [ ](#To-swap-the-two-words "To-swap-the-two-words")To swap the two words

```javascript=
s=input().split(" ")
for i in range(len(s)-1,-1,-1):
    print(s[i],end=" ")
```

### [ ](#The-first-and-last-occurrence "The-first-and-last-occurrence")The first and last occurrence

```javascript=
s=input()
address=[]
for i in range(0,len(s),1):
    if (s[i]=='f'):
        address.append(i)
if (len(address)==1):
    print(address[0])
elif(len(address)==0):
    pass
else:
    print(address[0],address[len(address)-1])
```

### [ ](#The-second-occurrence "The-second-occurrence")The second occurrence

```javascript=
s=input()
address=[]
for i in range(0,len(s),1):
    if (s[i]=='f'):
        address.append(i)
if (len(address)==1):
    print(-1)
elif(len(address)==0):
    print(-2)
else:
    print(address[1])
```

### [ ](#Remove-the-fragment "Remove-the-fragment")Remove the fragment

#### [ ](#find "find")find()

```javascript=
s=input()
print(s[ :s.find('h') ]+s[ s.rfind('h')+1: ] )
```

#### [ ](#儲存成陣列 "儲存成陣列")儲存成陣列

```javascript=
s=input()
b=[]
for i in range(0,len(s),1):
    if (s[i]=='h'):
        b.append(i)

print(s[0:b[0]]+s[b[len(b)-1]+1: ])
```

### [ ](#Reverse-the-fragment "Reverse-the-fragment")Reverse the fragment

```javascript=
s=input()
b=[]
for i in range(0,len(s),1):
    if (s[i]=='h'):
        b.append(i)

print(s[0:b[0]]+s[b[len(b)-1]-len(s):b[0]-len(s):-1]+s[b[len(b)-1]: ])
```

### [ ](#Replace-the-substring "Replace-the-substring")Replace the substring

```javascript=
s=input()
for i in s:
    if (i=='1'):
        print("one",end="")
    else:
        print(i,end="")
```

### [ ](#Delete-a-character "Delete-a-character")Delete a character

#### [ ](#Snakify-作法 "Snakify-作法")Snakify 作法

```javascript=
print(input().replace('@',''))
```

#### [ ](#我的解法84 "我的解法84")我的解法

```javascript=
s=input()
for i in s:
    if (i=='@'):
        pass
    else:
        print(i,end="")
```
### Replace within the fragment

#### [ ](#用find "用find")用find()

```javascript=
s=input()
l,r=(s.find('h'),s.rfind('h'))
for i in range(len(s)):
    if (s[i]=='h'):
        if(i!=l and i!=r):
            print('H',sep='',end='')
        else:
            print('h',sep='',end='')
    else:
        print(s[i],sep='',end='')
```

#### [ ](#用count "用count")用count()

```javascript=
s=input()
count=0
h=s.count('h')
for i in s:
    if (i=='h'):
        if (count==0):
            count+=1
            print(i,end="")
            continue
        elif (count==h-1):
            count+=1
            print(i,end="")
            continue
        print("H",end="")
        count+=1
    else:
        print(i,end="")
```

> **思路:** 第一個h和最後一個h不能改，可以用判斷第幾個h的方式執行，再者碰到第一個與最後一個h以continue的方式跳過

### [ ](#Delete-every-third-character "Delete-every-third-character")Delete every third character

```javascript=
s=input()
for i in range(0,len(s),1):
    if (i%3==0):
        pass
    else:
        print(s[i],end="")
```

CHAPTER 6
---------

**while迴圈**

1.  用在不確定次數的時候
2.  裡面條件是TURE(1)會執行

### [ ](#List-of-squares "List-of-squares")List of squares

```javascript=
a=int(input())
i=1
while (a>=i**2):
    print(i**2)
    i=i+1
```

### [ ](#Least-divisor "Least-divisor")Least divisor

```javascript=
n=int(input())
i=2
while(n%i!=0):
    i=i+1
print(i)
```

### [ ](#The-power-of-two "The-power-of-two")The power of two

```javascript=
n=int(input())
i=0
x=1
while (n>x):
    x=x*2
    i=i+1
    if(x*2>n):
        break
print(i,x)
```

### [ ](#Morning-jog "Morning-jog")Morning jog

```javascript=
x=int(input())
y=int(input())
Day=1
while(x < y):
    x=x*1.1
    Day=Day+1
print(Day)
```

### [ ](#The-length-of-the-sequence "The-length-of-the-sequence")The length of the sequence

```javascript=
i=0
a=int(input())
while(a!=0):
    a=int(input())
    i+=1
print(i)
```

### [ ](#The-sum-of-the-sequence "The-sum-of-the-sequence")The sum of the sequence

```javascript=
a=int(input())
sum=0
while(a!=0):
    sum=a+sum
    a=int(input())
print(sum)
```

### [ ](#The-average-of-the-sequence "The-average-of-the-sequence")The average of the sequence

```javascript=
count=0
a=int(input())
sum=0
while(a!=0):
    sum=sum+a
    a=int(input())
    count=count+1
print(sum/count)
```

### [ ](#The-maximum-of-the-sequence "The-maximum-of-the-sequence")The maximum of the sequence

```javascript=
a=int(input())
max=a
while(a!=0):
    if(a>max):
        max=a
    a=int(input())
print(max)
```

### [ ](#The-index-of-the-maximum-of-a-sequence "The-index-of-the-maximum-of-a-sequence")The index of the maximum of a sequence

```javascript=
address=1
max_address=1
a=int(input())
max=a
while(a!=0):
    if(a>max):
        max=a
        max_address=address
    a=int(input())
    address+=1
print(max_address)
```

> **後記:** 類似於氣泡排序

### [ ](#The-number-of-even-elements-of-the-sequence "The-number-of-even-elements-of-the-sequence")The number of even elements of the sequence

```javascript=
a=int(input())
count=0
while(a!=0):
    if (a%2==0):
        count+=1
    a=int(input())
print(count)
```

### [ ](#The-number-of-elements-that-are-greater-than-the-previous-one "The-number-of-elements-that-are-greater-than-the-previous-one")The number of elements that are greater than the previous one

```javascript=
a=int(input())
tmp=a
count=0
while(a!=0):
    a=int(input())
    if (a>tmp):
        count+=1
    tmp=a
print(count)
```
### The second maximum

#### [ ](#Snakify解法以兩變數實現 "Snakify解法以兩變數實現")Snakify解法(以兩變數實現)

```javascript=
first_max = int(input())
second_max = int(input())
if first_max < second_max:
    first_max, second_max = second_max, first_max
element = int(input())
while element != 0:
    if element > first_max:
        second_max, first_max = first_max, element
    elif element > second_max:
        second_max = element
    element = int(input())
print(second_max)
```

#### [ ](#本人解法list實現 "本人解法list實現")本人解法(list實現)

```javascript=
n=int(input())
b=[]
while(n!=0):
    b.append(n)
    n=int(input())
b.sort()
print(b[len(b)-2])
```

### [ ](#The-number-of-elements-equal-to-the-maximum "The-number-of-elements-equal-to-the-maximum")The number of elements equal to the maximum

```javascript=
n=int(input())
b=[]
while(n!=0):
    b.append(n)
    n=int(input())
max_=max(b)
count=0
for i in b:
    if (max_==i):
        count+=1
print(count)
```

### [ ](#Fibonacci-numbers "Fibonacci-numbers")Fibonacci numbers

```javascript=
n=int(input())
b=[0,1]
for i in range(1,n+1,1):
    b.append(b[i]+b[i-1])

print(b[len(b)-2])
```

### [ ](#The-index-of-a-Fibonacci-number "The-index-of-a-Fibonacci-number")The index of a Fibonacci number

#### [ ](#Snakify作法無unfind問題 "Snakify作法無unfind問題")Snakify作法(無unfind問題)

```javascript=
a = int(input())
if a == 0:
    print(0)
else:
    fib_prev, fib_next = 0, 1
    n = 1
    while fib_next <= a:
        if fib_next == a:
            print(n)
            break
        fib_prev, fib_next = fib_next, fib_prev + fib_next
        n += 1
    else:
        print(-1)
```

#### [ ](#本人作法有unfind問題 "本人作法有unfind問題")本人作法(有unfind問題)

```javascript=
b=[0,1]
for i in range(1,100,1):
    b.append(b[i]+b[i-1])
f=int(input())
flag=0
for i in range(0,100,1):
    if (b[i]==f):
        print(i)
        flag=1
        break
if (flag==0):
    print(-1)
```

> **後記:** 看完解答才想到可以用兩變數(fib1,fib2)的方式實現，既不會浪費太多記憶體也不會浪費太多時間

### The maximum number of consecutive equal elements

```javascript=
n=int(input())
pre=0
count=1
max_count=1
while n!=0:
    if n==pre:
        count+=1
        max_count=max(max_count,count)
    else:
        count=1
    pre=n
    n=int(input())
print(max_count)
```

> **思路:** 用count的方式跟最大數到的數字比，若比較大則取代之

CHPTER 7
--------
:::success
**List**  
1.單行輸入用列表生成式實現`[ int(i) for i in input().split()]`  
2.多行輸入用append實現  
3.切片技巧很方便
:::

### Even indices

#### [ ](#正常解 "正常解")正常解

```javascript=
a=input().split(" ")
for i in range(0,len(a),2):
    print(a[i],end=" ")
```

#### [ ](#一行流113 "一行流113")一行流

```javascript=
print(" ".join([i for i in input().split(' ')][0::2]))
```

### [ ](#Even-elements "Even-elements")Even elements

```javascript=
a=[ int(i) for i in input().split()]
for i in a:
    if (i%2==0):
        print( i , end=' ')
```

> **後記:** 列表生成式很好用 `[ int(i) for i in input().split()]` 可以直接生成一個列表

### Greater than neighbours

```javascript=
a = [int(i) for i in input().split()]
flag=0
for i in range(1,len(a)-1,1):
    if (a[i]>a[i-1] and a[i]>a[i+1]):
        flag+=1
print(flag)
```

### Queens

```javascript=
a=[]
for i in range(8):
    row_list=[int(g) for g in input().split()]
    a.append(row_list)
flag=0
for i in range(8):
    for g in range(8):
        if(i==g):
            break
        elif ((abs(a[i][0]-a[g][0]))==(abs(a[i][1]-a[g][1]))):
            flag=1
        elif (a[i][0]==a[g][0]):
            flag=1
        elif (a[i][1]==a[g][1]):
            flag=1
if (flag==1):
    print("YES")
else:
    print("NO")
```

> **後記:** 個人認為本章最困難的一題，有偷偷用二維陣列實現，但也是可以用一維處理

### The bowling alley

```javascript=
N,K=map(int,input().split())
a=[]
for i in range(K):
    row_array=[int(g) for g in input().split()]
    a.append(row_array)
    
pin=[1]*N
for i in range(K):
    for j in range(a[i][0]-1,a[i][1],1):
        pin[j]=0
for i in range(N):
    if (pin[i]==0):
        print(".",sep="",end="")
    elif (pin[i]==1):
        print("I",sep="",end="")
```

> 後記: 用.和I還比較快

CHAPTER 8
---------

### [ ](#The-length-of-the-segment "The-length-of-the-segment")The length of the segment

```javascript=
import math

def distance(a,b):
    dis=math.sqrt(a**2+b**2)
    return dis

x1=float(input())
y1=float(input())
x2=float(input())
y2=float(input())
print(distance(abs(x2-x1),abs(y2-y1)))
```

### [ ](#Negative-exponent "Negative-exponent")Negative exponent

```javascript=
def power(a,b):
    return a**b
print(power(float(input()),float(input())))
```

### [ ](#Uppercase "Uppercase")Uppercase

```javascript=
def capitalize(a):
    return chr(ord(a)-32)
a=input()
for i in range(0,len(a),1):
    if(a[i-1]==' '):
        print(capitalize(a[i]),end="")
    elif (i==0):
        print(capitalize(a[i]),end="")
    else:
        print(a[i],end="")
```
> 後記: ASCII表大寫小寫差32(小寫比較大)
:::warning
**以下開始是遞迴**
:::

### Exponentiation

```javascript=
def f(x,y):
    if(y==1):
        return x
    elif (y==0):
        return 1
    else:
        return f(x,y-1)*x
x=float(input())
y=float(input())
print(f(x,y))
```

### [ ](#Reverse-the-sequence "Reverse-the-sequence")Reverse the sequence


```javascript=
def f():
    a=int(input())
    if (a!=0):
        f()
    # Isn't 0 it will keep input
    print(a)
    # when a=0 it will print
f()
```

CHAPTER 9
---------

### [ ](#Maximum "Maximum")Maximum

```javascript=
#Initialized & Input
a=[]
row,col=map(int,input().split())
for i in range(row):
    c=[int(i) for i in input().split()]
    a.append(c)
    
#Processing
max_=a[0][0]
address_x,address_y=0,0
for i in range(row):
    for j in range(col):
        if (a[i][j]>max_):
            max_=a[i][j]
            address_x,address_y=i,j
            
#Print
print(address_x,address_y)
```

### [ ](#Snowflake "Snowflake")Snowflake

```javascript=
#Initialized & Input
N=int(input())
a=[['.']*N for i in range(N)]

#Processing the list
for i in range(N):
    for j in range(N):
        if ( i==(N-1)/2 or j==(N-1)/2 ):
            a[i][j] = "*"
        elif (i == j):
            a[i][j] = "*"
        elif (i+j==(N-1)):
            a[i][j] = "*"
            
#Print
for i in range(N):
    for j in range(N):
            print(a[i][j],end=" ",sep=" ")
    print()
```

### [ ](#Chess-board "Chess-board")Chess board

```javascript=
#Initialized & Input
row,col=[int(i) for i in input().split()]
a=[["."]*col for i in range(row)]

#Processing the list
for i in range(row):
    for j in range(col):
        if (i%2==1):
            if (j%2==0):
                a[i][j] = "*"
        elif (i%2==0):
            if (j%2==1):
                a[i][j] = "*"
                
#Print
for i in range(row):
    for j in range(col):
        print(a[i][j],end=" ",sep=" ")
    print()
```

> 注意: line 3 `[["."]*col for i in range(row)]` 不能寫成`[["."]*col]*row`此種寫法的指標會和row=0時相同(原因是Python =和C++ = 概念不同)

### [ ](#The-diagonal-parallel-to-the-main "The-diagonal-parallel-to-the-main")The diagonal parallel to the main

```javascript=
n = int(input())
for i in range(n):
    for j in range(-i,n-i,1):
        print (abs(j),end=" ",sep=" ")
    print()
```

### [ ](#Side-diagonal "Side-diagonal")Side diagonal

```javascript=
n=int(input())
a=[[0]*n for i in range(n)]
for i in range(n):
    for j in range(n):
        if (i+j==n-1):
            a[i][j]=1
        elif (i+j>n-1):
            a[i][j]=2
for i in range(n):
    for j in range(n):
        print(a[i][j],sep=" ",end=" ")
    print()
```

CHAPTER 10
----------

### [ ](#The-number-of-distinct-numbers "The-number-of-distinct-numbers")The number of distinct numbers

```javascript=
A={int(i) for i in input().split()}
max_=max(A)
count=0
for i in range(max_+1):
    if (i in A):
        count+=1
print(count)
```

### [ ](#The-number-of-equal-numbers "The-number-of-equal-numbers")The number of equal numbers

```javascript=
print(len(set(input().split()).intersection(set(input().split()))))
```

### [ ](#The-intersection-of-sets "The-intersection-of-sets")The intersection of sets

```javascript=
print(" ".join(sorted(set(input().split()).intersection(set(input().split())))))
```

### [ ](#Has-the-number-been-encountered-before "Has-the-number-been-encountered-before")Has the number been encountered before

```javascript=
A=[int(i) for i in input().split()]
for i in range(len(A)):
    if A[i] in A[0:i]:
        print("YES")
    else:
        print("NO")
```



### Cubes

```javascript=
M,N=map(int,input().split())
Alice=set()
Bod=set()
for i in range(M):
    Alice.add(input())
for i in range(N):
    Bod.add(input())
print(len(Alice&Bod))
print("\n".join(sorted(Alice&Bod)))
print(len(Alice-Bod))
print("\n".join(sorted(Alice-Bod,key=lambda x:int(x))))
print(len(Bod-Alice))
print("\n".join(sorted(Bod-Alice)))
```



### Guess the number

```javascript=
all_={int(i) for i in range(1,int(input()))}
possible=all_
while True:
    guess=input()
    if guess=="HELP":
        break
    guess={int(i) for i in guess.split()}
    ans=input()
    if ans=="YES":
        possible &= guess
    elif ans=="NO":
        possible &= (all_-guess)
print(" ".join([str(i) for i in possible]))
```

### [ ](#Polyglots "Polyglots")Polyglots

```javascript=
n=int(input())
language=[]
for i in range(int(input())):
    language.append(input())
general=set(language)
all_=set(language)
for i in range(n-1):
    language=[]
    for j in range(int(input())):
        language.append(input())
    general&=set(language)
    all_|=set(language)

general=sorted(list(general),key= lambda x:ord(x[0]))
all_=sorted(list(all_),key = lambda x:ord(x[0]))
print(len(general))
for i in general:
    print(i)
print(len(all_))
for i in all_:
    print(i)
```

CHAPTER 11
----------

### [ ](#Number-of-occurrences "Number-of-occurrences")Number of occurrences

```javascript=
a=input().split()
dic=dict()
for i in a:
    if i not in dic:
        print(0,end=" ")
        dic[i]=1
    
    else:
        print(dic[i],end=" ")
        dic[i]+=1
```

### [ ](#Dictionary-of-synonyms "Dictionary-of-synonyms")Dictionary of synonyms

```javascript=
n=int(input())
dic=dict()
for i in range(n):
    a=[j for j in input().split()]
    dic[a[0]]=a[1]

word=input()
if word in dic:
    print(dic[word])
else:
    new_dic={v:k for k,v in dic.items()}
    print(new_dic[word])
```

### [ ](#Elections-in-the-USA "Elections-in-the-USA")Elections in the USA

```javascript=
n=int(input())
dic={}
for i in range(n):
    a=[i for i in input().split()]
    a[1]=int(a[1])
    if a[0] not in dic:
        dic[a[0]]=a[1]
    elif a[0] in dic:
        dic[a[0]]+=a[1]
new_dic=sorted(dic.items(),key= lambda x:(ord(x[0][0])))
for k,v in new_dic:
    print(k,v)
```

### Frequency analysis

```javascript=
n=int(input())
dic={}
for i in range(n):
    line=input().split()
    for j in line:
        if j not in dic:
            dic[j]=1
        else:
            dic[j]+=1
new=[(-j,i) for (i,j) in dic.items()]
new=sorted(new)
for i,j in new:
    print(j)
```

### [ ](#English-Latin-dictionary "English-Latin-dictionary")English-Latin dictionary

```javascript=
dic={}
for i in range(int(input())):
    line=input().split(" - ")
    latin=line[1].split(", ")
    for i in latin:
        if i in dic:
            dic[i].append(line[0])
        else:
            dic[i]=[line[0]]
print(len(dic))
for i in sorted(dic):
    print(i,"-",", ".join(dic[i]))
```

