---
# System prepended metadata

title: Zerojudge參考解答-Python

---

# Zerojudge參考解答-Python
Zerojudge是個接觸程式設計後練習題目時必去的網站，也是目前台灣人數使用人數最多的Judge網站。

這裡是[ericleaf](https://zerojudge.tw/UserStatistic?id=158879)以Python撰寫的參考解答的集中地，持續更新中。

~~沒有的就是還沒答出來。~~
## 依出處分類
### 基礎題庫
[a001](#a001) [a002](#a002) [a003](#a003) [a004](#a004) [a005](#a005)
[a006](#a006) [a009](#a009) [a010](#a010) [a013](#a013) [a015](#a015)
[a017](#a017) [a020](#a020) [a022](#a022) [a034](#a034) [a038](#a038)
[a040](#a040) [a044](#a044) [a042](#a042) [a053](#a053) [a065](#a065) 
[a095](#a095) [a104](#a104) [a147](#a147) [a149](#a149) [a216](#a216) 
[a224](#a224) [a410](#a410) [a738](#a738) [d049](#d049) [d058](#d058) 
[d827](#d827) [e051](#e051) [f070](#f070) [f165](#f165) [g216](#g216)
### IOI/APCS
[c294](#c294) [g275](#g275)
### UVa題庫
[a011](#a011) [a012](#a012) [a111](#a111) [a130](#a130) [a131](#a131)
### 原創/不分類題庫
## 依題號排列
### [a001](https://zerojudge.tw/ShowProblem?problemid=a001)<span id="a001"></span>
```
s=input()
print("hello,",s)
```
### [a002](https://zerojudge.tw/ShowProblem?problemid=a00)<span id="a002"></span>
```
a,b=map(int,input().split())
print(a+b)
```
### [a003](https://zerojudge.tw/ShowProblem?problemid=a003)<span id="a003"></span>
```
m,d=map(int,input().split())
s=(m*2+d)%3
if s==0:
    print("普通")
elif s==1:
    print("吉")
else:
    print("大吉")
```
### [a004](https://zerojudge.tw/ShowProblem?problemid=a004)<span id="a004"></span>
之前碰到這種輸入直到EOF結束的題目都是用陣列處理掉，後來發現還可以用try來解決。
```
n = int(input('n='))
l = []
for i in range(n):
    l.append(int(input('year:')))
for i in l:
    if (i % 4 == 0 and i % 100 != 0) or i % 400 == 0:
        print('a leap year')
    else:
        print('a normal year')
```
```
while 1:
    try:
        y=int(input())
        if ((y%4==0) and (y%100!=0)) or (y%400==0):
            print("閏年")
        else:
            print("平年")
    except:
        break 
```
### [a005](https://zerojudge.tw/ShowProblem?problemid=a005)<span id="a005"></span>
```
a,b,c,d=map(int,input().split())
if b-a == d-c:
    print(a,b,c,d,2*d-c)
else:
    print(a,b,c,d,int(d**2/c)) 
```
### [a006](https://zerojudge.tw/ShowProblem?problemid=a006)<span id="a006"></span>
```
a,b,c=map(int,input().split())
try:
    x1=int((((b**2-4*a*c)**0.5)-b)/(2*a))
    x2=int((-((b**2-4*a*c)**0.5)-b)/(2*a))
    if x1!=x2:
        print("Two different roots x1=",x1," , x2=",x2,sep="")
    else:
        print("Two same roots x=",x1,sep="")  
except:
    print("No real root")
```
### [a009](https://zerojudge.tw/ShowProblem?problemid=a009)<span id="a009"></span>
```
s=input()
for x in s:
    print(chr(ord(x)-7),end="")
```
### [a010](https://zerojudge.tw/ShowProblem?problemid=a010)<span id="a010"></span>
```
n=int(input())
d=2
l=[]
while n!=1:
    if n%d==0:
        n=n/d
        l.append(d)
        d=2
        continue
    d+=1
x=0
while x<len(l):
    if l.count(l[x])>1:
        print(l[x],"^",l.count(l[x]),sep="",end="")
        x+=l.count(l[x])
    else:
        print(l[x],end="")
        x+=1    
    if x!=len(l):
        print(" * ",end="")
```
### [a011](https://zerojudge.tw/ShowProblem?problemid=a011)<span id="a011"></span>
```
n=1
while 1:
    try:
        s=input()
        s=" "+s
        n=0
        for x in range(1,len(s)):
            if ((65<=ord(s[x])<=90) or (97<=ord(s[x])<=122)) and (not((65<=ord(s[x-1])<=90) or (97<=ord(s[x-1])<=122))):
                n+=1    
        print(n)
    except:
        break  
```
### [a012](https://zerojudge.tw/ShowProblem?problemid=a012)<span id="a012"></span>
```
while 1:
  try:
    n1, n2 = (int(i) for i in input().split())
    print((n1-n2) if (n1>=n2) else (n2-n1))
  except:
    break
```
### [a013](https://zerojudge.tw/ShowProblem?problemid=a013)<span id="a013"></span>
```
def romanToInt(s):
  d = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'O':0}
  s = s + 'O'
  ans = 0
  for i in range(len(s)-1):
    if d[s[i]] >= d[s[i+1]]: ans += d[s[i]]
    else: ans -= d[s[i]]   
  return ans

while 1:
  inp = input()
  if inp == '#': break
  n1 ,n2 = inp.split()
  if n1 == n2:
    print('ZERO')
    continue
  diff = romanToInt(n1) - romanToInt(n2)
  if diff < 0: diff *= -1
  ans = ''
  intToRoman = {1000:'M',900:'CM',500:'D',400:'CD',100:'C',90:'XC',50:'L',40:'XL',10:'X',9:'IX',5:'V',4:'IV',1:'I'}
  for i in tuple(intToRoman.keys()):
    ans += intToRoman[i] * (diff // i)
    diff -= i * (diff // i)
  print(ans)
```
### [a015](https://zerojudge.tw/ShowProblem?problemid=a015)<span id="a015"></span>
```
while 1:
    try:
        r,c=map(int,input().split())
        l=[[0]*c]*r
        for x in range(r):
            l[x] = input().split()
        for x in range(c):
            for y in range(r):
                print(l[y][x],end=" ")
            print()
    except:
        break   
```
### [a017](https://zerojudge.tw/ShowProblem?problemid=a017)<span id="a017"></span>
究級偷懶寫法，因為全部的除法都是為整數除，所以要替換掉。
```
while 1:
  try:
    ans = ''
    for i in input():
      if i == '/': ans += '//'
      else: ans += i
    print(eval(ans))
  except: break
```
### [a020](https://zerojudge.tw/ShowProblem?problemid=a020)<span id="a020"></span>
```
d={"A":1,"B":10,"C":19,"D":28,"E":37,"F":46,"G":55,"H":64,"I":39,"J":73,"K":82,"L":2,"M":11,\
   "N":20,"O":48,"P":29,"Q":38,"R":47,"S":56,"T":65,"U":74,"V":83,"W":21,"X":3,"Y":12,"Z":30}
c=input()
n=0
if (d[c[0]]+int(c[1])*8+int(c[2])*7+int(c[3])*6+int(c[4])*5+int(c[5])*4+int(c[6])*3+int(c[7])*2+int(c[8])+int(c[9]))%10==0:
    print("real")
else:
    print("fake")  
```
### [a021](https://zerojudge.tw/ShowProblem?problemid=a021)<span id="a021"></span>
笑死。
雖然Python的寫法應該跟[a017](#a017)類似，反正沒有變數限制。
```
print(eval(input().replace('/','//')))
```
### [a022](https://zerojudge.tw/ShowProblem?problemid=a022)<span id="a022"></span>
```
s=input()
for x in range(len(s)):
    if s[x]==s[len(s)-1-x]:
        continue
    print("no")
    break
else:
    print("yes")
```
### [a034](https://zerojudge.tw/ShowProblem?problemid=a034)<span id="a034"></span>
```
while 1:
    try:
        n=int(input())
        s=""
        while n>0:
            s=str(n%2)+s
            n=n//2
        print(s)    
    except:
        break
```
### [a038](https://zerojudge.tw/ShowProblem?problemid=a038)<span id="a038"></span>
```
n=int(input())
if n==0:
    print(0)
else:
    while n%10==0:
        n=n//10
    for x in range(len(str(n))-1,-1,-1):
        print(str(n)[x],end="")
```
### [a040](https://zerojudge.tw/ShowProblem?problemid=a040)<span id="a040"></span>
```
n,m=map(int,input().split())
t=0
for x in range(n,m+1):
    s=str(x)
    n=0
    for y in s:
        n+=int(y)**(len(s))
    if n == x:
        print(x,end=" ")
        t+=1   
if t==0:
    print("none")
```
### [a042](https://zerojudge.tw/ShowProblem?problemid=a042)<span id="a042"></span>
```
while 1:
    try:
        n = int(input())
        area = 2 * n
        if n >= 3:
            area += ((n - 1) * (n - 2))
        print(area)
    except:
        break
```
### [a044](https://zerojudge.tw/ShowProblem?problemid=a044)<span id="a044"></span>
```
while 1:
  try:
    n = int(input())
    print(n+1+n*n*(n-1)//2-(n-1)*n*(2*n-1)//6)
  except: break
```
### [a053](https://zerojudge.tw/ShowProblem?problemid=a053)<span id="a053"></span>
```
n = int(input())
score = 0
if n <= 10:
    score = 6 * n
elif n <= 20:
    score = 40 + 2 * n
elif n <= 40:
    score = 60 + n
else:
    score = 100
print(score)
```
### [a065](https://zerojudge.tw/ShowProblem?problemid=a065)<span id="a065"></span>
```
while 1:
    try:
        s=input()
        for x in range(0,6):
            print(abs(ord(s[x])-ord(s[x+1])),end="")
        print()    
    except:
        break
```
### [a095](https://zerojudge.tw/ShowProblem?problemid=a095)<span id="a095"></span>
```
while 1:
    try:
        n,m=map(int,input().split())
        if n==m:
            print(n)
        else:
            print(m+1)    
    except:
        break
```
### [a104](https://zerojudge.tw/ShowProblem?problemid=a104)<span id="a104"></span>
```
while 1:
    try:
        n=int(input())
        l=list(map(int,input().split()))
        l.sort()
        for x in range(n-1):
            print(l[x],end=" ")
        print(l[n-1])    
    except:
        break
```
### [a111](https://zerojudge.tw/ShowProblem?problemid=a111)<span id="a111"></span>
```
n=1
while 1:
    n=int(input())
    if n==0:
        break
    s=0
    for x in range(1,n+1):
        s+=x**2
    print(s)   
```
### [a130](https://zerojudge.tw/ShowProblem?problemid=a130)<span id="a130"></span>
```
t = int(input())
for i in range(t):
  link = ['']*10
  vi = [0]*10
  for j in range(10):
    link[j], vi[j] = input().split()
  vi = [int(k) for k in vi]
  print('Case #%d:'%(i+1))
  maxIndex = []
  for l in range(10):
    if vi[l] == max(vi): maxIndex.append(l)
  for m in maxIndex:
    print(link[m])
```
### [a131](https://zerojudge.tw/ShowProblem?problemid=a131)<span id="a131"></span>
```
print(' '*9,'NAME',' '*21,'SOUNDEX CODE',sep='')
while 1:
  try:
    name = input()
    soundexCode = name[0]
    code = {'B':'1','P':'1','F':'1','V':'1','C':'2','S':'2','K':'2','G':'2','J':'2','Q':'2','X':'2','Z':'2','D':'3','T':'3','L':'4','M':'5','N':'5','R':'6','A':'','E':'','I':'','O':'','U':'','Y':'','W':'','H':''}
    for i in range(1,len(name)):
      if code[name[i]] != code[name[i-1]]: soundexCode += code[name[i]]
      if len(soundexCode) == 4: break
    else: soundexCode += '0'*(4-len(soundexCode))
    print(' '*9,'%-25s%s'%(name,soundexCode),sep='')
  except: 
    print(' '*19,'END OF OUTPUT',sep='')
    break
```
### [a147](https://zerojudge.tw/ShowProblem?problemid=a147)<span id="a147"></span>
```
while 1:
    n=int(input())
    if n==0: break
    for x in range(1,n):
        if x%7!=0:
            print(x,end=" ")        
    print()
```
### [a149](https://zerojudge.tw/ShowProblem?problemid=a149)<span id="a149"></span>
```
t = int(input())
for i in range(t):
  n = input()
  ans = 1
  for j in n:
    ans *= int(j)
  print(ans)
```
### [a216](https://zerojudge.tw/ShowProblem?problemid=a216)<span id="a216"></span>
解題報告在[這裡](https://zerojudge.tw/ShowThread?postid=33398&reply=0)
```
def f(n):
    return int((1+n)*n/2)
def g(n):
    return int(((1+n)*n/2)*(n+1)-n*(n+1)*(2*n+1)/6)

while True:
    try:
        n = int(input())
        print(f(n),g(n))
    except:
        break
```
### [a224](https://zerojudge.tw/ShowProblem?problemid=a224)<span id="a224"></span>
```
while 1:
  try:
    sen = input()
    word = {}
    for i in sen:
      if (ord(i) >= 97 and ord(i) <= 122):
        try: word[i] += 1
        except: word[i] = 1
      if (ord(i) >= 65 and ord(i) <= 90):
        try: word[chr(ord(i)+32)] += 1
        except: word[chr(ord(i)+32)] = 1
    odd = 0
    for j in tuple(word.values()):
      odd += j % 2
      if odd > 1:
        print('no...')
        break
    else: print('yes !')
  except: break
```
### [a410](https://zerojudge.tw/ShowProblem?problemid=a410)<span id="a410"></span>
這題有用到以前學的克拉瑪公式。
```
a,b,c,d,e,f=map(int,input().split())
if (a*e-b*d)!=0:
    print("x=","%4.2f"%((c*e-b*f)/(a*e-b*d)),"\n","y=","%4.2f"%((a*f-c*d)/(a*e-b*d)),sep="")
elif (c*e-b*f)==0 and (a*f-c*d)==0:
    print("Too many")
else:
    print("No answer")  
```
### [a738](https://zerojudge.tw/ShowProblem?problemid=a738)<span id="a738"></span>
```
while 1:
    try:
        a,b=map(int,input().split())
        if a>b:
            a,b=b,a
        t=a     
        while t!=0:
            t=b%a
            b=a
            a=t
        print(b)
    except:
        break
```
### [c294](https://zerojudge.tw/ShowProblem?problemid=c294)<span id="c294"></span>
```
l=sorted(list(map(int,input().split())))
a=l[0]
b=l[1]
c=l[2]
print(a,b,c)
if (a+b>c) and (a+c>b) and (b+c>a):
    if (a*a+b*b<c*c):
        print("Obtuse")
    elif (a*a+b*b>c*c):
        print("Acute")
    else:
        print("Right")        
else:
    print("No")
```
### [d049](https://zerojudge.tw/ShowProblem?problemid=d049)<span id="d049"></span>
```
print(int(input())-1911)
```
### [d058](https://zerojudge.tw/ShowProblem?problemid=d058)<span id="d058"></span>
```
i = int(input())
if i > 0: print(1)
elif i < 0: print(-1)
else: print(0)
```
### [d827](https://zerojudge.tw/ShowProblem?problemid=d827)<span id="d827"></span>
```
n = int(input())
print(n//12*50+n%12*5)
```
### [e051](https://zerojudge.tw/ShowProblem?problemid=e051)<span id="e051"></span>
```
s=input()
print(s[0],"_"*(len(s)-2),s[len(s)-1],sep="")
```
### [f070](https://zerojudge.tw/ShowProblem?problemid=f070)<span id="f070"></span>
```
a1,b1=map(int,input().split())
a2,b2=map(int,input().split())
a3,b3=map(int,input().split())
n=1
while 1:
    if (n%a1==b1) and (n%a2==b2) and (n%a3==b3):
        break
    n+=1
print(n)
```
### [f165](https://zerojudge.tw/ShowProblem?problemid=f165)<span id="f165"></span>
```
l,c=map(int,input().split())
if c==0:
    print("OK!")
else:
    if l%c==0:
        print("OK!")
    else:
        print(l%c)
```
### [g216](https://zerojudge.tw/ShowProblem?problemid=g216)<span id="g216"></span>
```
print("2^(10^%d)"%int(input()))
```
### [g275](https://zerojudge.tw/ShowProblem?problemid=g275)<span id="g275"></span>
```
n=int(input())
for x in range(n):
    u=input().split()
    d=input().split()
    if ((u[1]==u[5]!=u[3]) and (d[1]==d[5]!=d[3])) and ((u[6]=="1") and (d[6]=="0")) and ((u[1]!=d[1]) and (u[3]!=d[3]) and (u[5]!=d[5])):
        print("None")
    else:
        if (u[1]==u[3]) or (u[1]!=u[5]) or (d[1]==d[3]) or (d[1]!=d[5]):
            print("A",end="")
        if (u[6]!="1") or (d[6]!="0"):
            print("B",end="")
        if (u[1]==d[1]) or (u[3]==d[3]) or (u[5]==d[5]):
            print("C",end="")
        print()
```