顯示具有 APCS 標籤的文章。 顯示所有文章
顯示具有 APCS 標籤的文章。 顯示所有文章

2024年10月8日 星期二

APCS類似題練習

 for i in range(5):

    for k in range(5,i,-1):

        print(' ',end='')

    for j in range(2*i+1):

        print('*',end='')

    print()

##

##     *

##    ***

##   *****

##  *******

## *********


定時K彈


 N = int(input())

M = int(input())

p = list(range(1,N+1))


c = 1

while len(p)>1:

    if c%2 != 0:

        p.append(p[0])

    p.remove(p[0])

    c +=1

print(p)


2024年5月27日 星期一

queue

 a = list(range(1,31))

i = 1

while len(a)>1:

    if i %3==0:

        a.append(a[0])

    del a[0]

    i = i +1

print(a)

#執行結果

[18]



2024年5月24日 星期五

交錯字串

 while True:

    try:

        ddd = input()

        print(ddd)

        k = int(input().strip())

        d = input().strip()

        

        dd = ''

        for i in d:

            if i>='a':

              dd+='0'

            else:

                dd+='1'

        

        s = ''

        c = 0

        is0 = True

        isEnd = False

        

        while not isEnd: 

            if is0:

                s += '0'*k

                if s in dd:

                    c += k

                else:

                    isEnd = True

            else:

                s += '1'*k

                if s in dd:

                    c +=k

                else:

                    isEnd = True

            is0 = not is0        

        print(c)

    except:

        break

2022年4月28日 星期四

四捨五入自己寫

 f = '123.3456789'

def myround(f,fix):
    k =f[f.find('.')+fix+1]
    # print(k)
    if int(k) >=5:
        a = str(int(f[f.find('.')+fix])+1)
        a = f[:f.find('.')+fix]+a
    else:
        a = float(f[:f.find('.')+fix+1])
    if fix == 0:
        a = f[:f.find('.')]
    return(a)
for i in range(len(f)-f.find('.')-1):
    print(myround(f,i))

2022年4月27日 星期三

數字龍捲風

 d1 = '''

3 4 2 1 4
4 2 3 8 9
2 1 9 5 6
4 2 3 7 8
1 2 6 4 3
'''
d = [[j for j in i.split()] for i in d1.strip().split('\n')]

def go():
    global turn,ctr,r,c
    turn = turn % 4
    if turn ==0:
        c-=1
    elif turn==1:
        r-=1
    elif turn==2:
        c+=1
    elif turn ==3:
        r+=1  
    print(d[r][c],end='')
    ctr += 1
    if ctr>=n**2: exit()
turn = 0
n = 5

r,c =n//2,n//2
ctr = 0
print(d[r][c],end='')
ctr += 1
if n==1:exit()

for i in range(1,6):
    for j in range(i):
        go()
    turn +=1
    for j in range(i):
        go()
    turn +=1

Height of Tree

 class Node:

    def __init__(self,root=None,left=None,right=None):
        self.root = root
        self.left = left
        self.right = right

    def height(self):
        return 1+max(self.left.height() if self.left is not None else 0,
                     self.right.height() if self.right is not None else 0)

tree = [Node() for _ in range(1023)]
root = tree[0]

for i in range(len(tree)):
    l_child_idx,r_child_idx = (i+1)*2-1,(i+1)*2
    root_idx = (i-1)//2
    if root_idx :
        tree[i].root = tree[root_idx]
    if l_child_idx < len(tree):
        tree[i].left = tree[l_child_idx]
    if r_child_idx < len(tree):
        tree[i].right = tree[r_child_idx]

print(root.height())

資料來源:https://www.796t.com/post/N2dodnk=.html

小群體

 instr = '''

10
4 7 2 9 6 0 8 1 5 3
'''
d1 = instr.strip().split('\n')
n = int(d1[0])
r = list(range(n))
# print(r)

d = [int(i) for i in d1[1].split(' ')]
# print(d)

gs = []
t = set()
t.add(d[0])
t.add(r[0])
gs.append(t)

for j in range(1,len(d)):
    for i in gs:
        if d[j] in i or r[j] in i:
            i.add(d[j])
            i.add(r[j])
            break
        else:
            t = set()
            t.add(d[j])
            t.add(r[j])
            gs.append(t)

gs1 = []
for i in gs:
    if i not in gs1:
        gs1.append(i)
print(len(gs1))

2022年4月26日 星期二

秘密差

 d = '263541'

s1 = 0
s2 = 0
for i in range(len(d)):
    if i%2==0:
        s1+=int(d[i])
    else:
        s2+=int(d[i])
print(abs(s1-s2))

棒球遊戲III

 ins = '''

5 1B 1B FO GO 1B
5 1B 2B FO FO SO
4 SO HR SO 1B
4 FO FO FO HR
4 1B 1B 1B 1B
4 GO GO 3B GO
4 1B GO GO SO
4 SO GO 2B 2B
4 3B GO GO FO
6
'''
d1 = [ i for i in ins.strip().split('\n') ]
b = int(d1[-1])
d1.pop()
d2 = [[j for j in i.split()] for i in d1]

d = []
for i in range(1,6):
    for j in range(9):
        if int(d2[j][0])>= i:
            d.append(d2[j][i])

def aB(n):
    global score
    p.append(1)
    for i in range(n-1):
        p.append(0)
       
    for i in range(n):
        c = p.pop(0)    
        score = score + c        

def hr():
    global score
    global p
    score = score + sum(p)+1
    p=[0,0,0]

# main
score = 0
p = [0,0,0]
out = 0
bc = 0
for i in range(len(d)):
    cur = d.pop(0)
    if cur[0] in '123' :
        aB(int(cur[0]))
    elif cur[1]=='O':
        out+=1
        bc+=1
    elif cur == 'HR': hr()
 
    if out ==3 :
        out==0
        p = [0,0,0]  
    if b == bc: break
print(score)

棒球遊戲II

 ins = '''

5 1B 1B FO GO 1B
5 1B 2B FO FO SO
4 SO HR SO 1B
4 FO FO FO HR
4 1B 1B 1B 1B
4 GO GO 3B GO
4 1B GO GO SO
4 SO GO 2B 2B
4 3B GO GO FO
6
'''
d1 = [ i for i in ins.strip().split('\n') ]
b = int(d1[-1])
d1.pop()
d2 = [[j for j in i.split()] for i in d1]

d = []
for i in range(1,6):
    for j in range(9):
        if int(d2[j][0])>= i:
            d.append(d2[j][i])

def aB(n):
    global score
    p.append(1)
    for i in range(n-1):
        p.append(0)
       
    for i in range(n):
        c = p.pop(0)    
        score = score + c        

def hr():
    global score
    global p
    score = score + sum(p)+1
    p=[0,0,0]

# main
score = 0
p = [0,0,0]
out = 0
bc = 0
for i in range(len(d)):
    cur = d.pop(0)
    if cur == '1B': aB(1)
    if cur == '2B': aB(2)
    if cur == '3B': aB(3)
    if cur == 'HR': hr()
    if cur[1]=='O':
        out+=1
        bc+=1
   
    if out ==3 :
        out==0
        p = [0,0,0]  
    if b == bc: break
print(score)

棒球遊戲

 ins = '''

5 1B 1B FO GO 1B
5 1B 2B FO FO SO
4 SO HR SO 1B
4 FO FO FO HR
4 1B 1B 1B 1B
4 GO GO 3B GO
4 1B GO GO SO
4 SO GO 2B 2B
4 3B GO GO FO
6
'''
d1 = [ i for i in ins.strip().split('\n') ]
b = int(d1[-1])
d1.pop()
d2 = [[j for j in i.split()] for i in d1]

d = []
for i in range(1,6):
    for j in range(9):
        if int(d2[j][0])>= i:
            d.append(d2[j][i])

def a1B():
    global score
    p.append(1)
    c = p.pop(0)    
    score = score + c

def a2B():
    global score
    p.append(1)
    p.append(0)

    c = p.pop(0)    
    score = score + c

    c = p.pop(0)    
    score = score + c

def a3B():
    global score
    p.append(1)
    p.append(0)
    p.append(0)
   
    c = p.pop(0)    
    score = score + c

    c = p.pop(0)    
    score = score + c
   
    c = p.pop(0)    
    score = score + c

def hr():
    global score
    global p
    score = score + sum(p)+1
    p=[0,0,0]

# main
score = 0
p = [0,0,0]
out = 0
bc = 0
for i in range(len(d)):
    cur = d.pop(0)
    if cur == '1B': a1B()
    if cur == '2B': a2B()
    if cur == '3B': a3B()
    if cur == 'HR': hr()
    if cur == 'FO':
        out+=1
        bc+=1
    if cur == 'GO':
        out+=1
        bc+=1
    if cur == 'SO':
        out+=1
        bc+=1  

    if out ==3 :
        out==0
        p = [0,0,0]
    # print(b,bc)
    if b == bc: break
print(score)

最大和

 ins = '''

4 3
6 3 2
2 7 9
4 7 1
9 5 3
'''
a = ins.strip().split('\n')
a.pop(0)
# print(a)
d = []
for i in a:
    t = [int(j) for j in i.split()]
    d.append(t)
# print(d)
s = 0
for i in d:
    s+=max(i)
print(s)
b=[]
for i in d:
    if s%max(i)==0:
        b.append(str(max(i)))
b = ''.join(b)
if b == '':
    print(-1)
else:
    print(b)

線段覆蓋長度

 d = [0 for i in range(1000+1)]

instr = '''5

160 180

150 200

280 300

300 330

190 210'''

d1 = [i for i in instr.strip().split()]

n = int(d1[0])

# d1.remove(d1[0])

d1.pop(0)

d1 = [int(i) for i in d1]

d2 = []

for i in range(0,len(d1),2):

    t = [d1[i],d1[i+1]]

    d2.append(t)


for i in d2:

    a,b = i[0],i[1]

    for j in range(a,b+1):

        d[j] = 1


d = [str(i) for i in d]

d = ''.join(d)

d = d.split('0')

d = [i for i in d if i!='']


s = 0

for i in d:

    t = i.split('2')

    t = [i for i in t if i!='']

    p = [i.count('1')-1 for i in t]

    s+=sum(p)

print(s)

2022年4月25日 星期一

矩陣轉換

 def tt(a):

    return a[::-1]

# a = [[1,1],

# [1,3],

# [2,1],

# [5,6],

# ]

a = [[1,1,8],

[1,3,7],

[2,1,6],

[5,6,5],

]

# a = [[1,1],

# [1,3],

# [2,1],

# ]

print(a)

cur = tt(a)

print(cur)


def rr(a):

    m = len(a[0])

    n = len(a)

    b =[ [0 for i in range(n)] for j in range(m)]

    

    for i in range(m):

        for j in range(n):

            b[i][j] = a[n-1-j][i]

    return b

    

cur = rr(cur)

print(cur)

cur = rr(cur)

print(cur)

成績指標

 import copy

n=10

a ='0 11 22 33 44 55 99 77 88 66'

a =[int(i) for i in  a.split(' ')]

print(a)

p = [i for i in a if i>=60]

np = [i for i in a if i<60]

b = a.copy()

b.sort()

print(b)

print(a)

print(p[0],np[-1])

定時K彈

 # n = 5

# m = 2

# k = 4


# a = [i+1 for i in range(5)]

# # print(a)


# i = 1

# while (len(a)>1):

#     t = a.pop(0)

#     # print(t)

#     if i%2!=0:

#         a.append(t)

#         # print(a)

#     i+=1

# print(a[0])


n = 5

m = 2

k = 4


a = [i+1 for i in range(10)]

# print(a)


i = 1

while (k>=1):

    t = a.pop(0)

    # print(t)

    if i%2!=0:

        a.append(t)

        # print(a)

    else:

        k-=1

    i+=1

print(a[0])