---
# System prepended metadata

title: 資訊科技課程學習成果

---

## 資訊小考題目整理
1. k299 最後倒數

    題目概略：給一數字n，代表接下來有幾個數字，及一個有n個數的數組，最後將原本的數組倒過來輸出
```python=
arr=list(map(int,input().split())) #輸入數組
index=len(arr)-1 #求出數組最後一個數字的索引值
new=[] #創建一個新數組，代表反轉後的數組
while(index>0): #執行此迴圈直到數組的第二個數(第一個數字是n)
    new.append(arr[index]) #從數組最後一個數推入新數組中
    index-=1 #每次往前進一個數，索引值減1
print(*new) ###輸出反轉後的數組，但須去掉[]，故加上*
```
2. k315 所有位數和
    
    題目概略：給一數字n，求這個數字所有位數和
```python=
n=int(input()) #輸入數字n
sum=0 #將一開始的位數和設為0
while(n>0): #若數字大於0，執行此迴圈
    sum+=n%10 #將n取10的餘數，也就是最後一個位數，並加到sum中
    n=n//10 #將n整除10，去掉最後一個位數
print(sum) #輸出位數和
```
3. k316 倒數計時
    
    題目概略：輸入一數字n，並從這個數字開始倒數到0為止
```python=
n=int(input()) #輸入數字n
for i in range(n,-1,-1): #由n開始倒數到0，每次遞減1
    print(i,end=' ') #輸出i，並以空白隔開
```
4. i632 購物折扣

    題目概略：輸入一個金額，若大於等於20000打9折，大於等於10000打95折，其餘打98折，若最後金額有小數則無條件捨去
```python=
import math #引入math函式庫
n=int(input()) #輸入金額
if n>=20000: #若金額大於等於20000，執行這個敘述
    n=n*0.9 #將金額打9折
elif n>=10000: #若金額大於等於10000，執行這個敘述
    n=n*0.95 #將金額打95折
else: #若都不符合以上敘述，執行這個敘述
    n=n*0.98 #將金額打98折
print(math.floor(n)) #將金額無條件捨去後輸出
```
5. h910 成績等第判斷

    題目概略：輸入一個成績，若大於等於80分輸出A，大於等於70分輸出B，大於等於60分則輸出C，低於60分輸出F
```python=
n=int(input()) #輸入一個數字
if n>=80: #若大於等於80，執行此敘述
    print("A")
elif n>=70: #若大於等於70，執行此敘述
    print("B")
elif n>=60: #若大於等於60，執行此敘述
    print("C")
else: #其餘情況則執行此敘述
    print("F")
```
6. k374 資料分組
    
    題目概略：給定一個n，代表接下來的數組有幾個數字，接著有n個數。最後有一個數m，輸出比m大的數字數量及比m小的數字數量
```python=
arr=list(map(int,input().split())) #輸入一個數組
index=len(arr)-1 #求數組最後一個數的索引值(這個數就是m)
m=arr[index] #將數組的最後一個數指定給m
index-=1 #將索引值減1，因為數組中從倒數第二個數才需要比較
big=0 #將比m大的數設為0
small=0 #將比m小的數設為0
while(index>0): #執行此迴圈直到數組的第二個數(第一個數字是n)
    a=arr[index] #將數組中的數字逐一指定到a，並進行比較
    if a>m: #若比m大執行此敘述
        big+=1
    if a<m: #若比m小執行此敘述
        small+=1
    index-=1 #將索引值減1
print(big,small,sep=" ") #輸出比m大及比m小的數字數量，以空格隔開
```
7. k431 團購力量大

    題目概略：蛋糕一個100元，買十送一，今天要買n個蛋糕，輸出需要多少錢
```python=
n=int(input()) #輸入要買幾個蛋糕
sum=0 #將總金額設為0
while(n>=11): #如果蛋糕數量大於11個，執行此判斷
    sum+=1000 #因為蛋糕買10送1，所以每11個蛋糕總金額多1000元
    n-=11 #把要購買的蛋糕數量減11
sum+=100*n #剩餘不足11個蛋糕每1個100元
print(sum) #輸出總金額
```
8. k432 大小關係

    題目概略:輸入兩個數a,b，比較他們的大小

```python=
a,b=map(int,input().split()) #輸入兩個數字a,b
if a>b: #如果a>b執行此敘述
    print(a,b,sep=">")
elif a<b: #如果a<b執行此敘述
    print(a,b,sep="<")
else: #如果a=b執行此敘述
    print(a,b,sep="=")
```

9. k433 Tea Time

    題目概略：給定一個時間，判斷是否為下午茶時間 (下午茶時間：14:10~16:10)
```python=
a,b=map(int,input().split()) #輸入時間，代表a時b分
x=0 #一開始先設定不是下午茶時間
if a==14 and b>=10: #如果是14時且是10分以後，改設為下午茶時間
    x=1
elif a==15: #如果是15時，改設為下午茶時間
    x=1
elif a==16 and b<=10: #如果是16時且是10分以前，改設為下午茶時間
    x=1

if x==1: #如果是下午茶時間輸出YES
    print("YES")
else: #否則輸出NO
    print("NO")
```
10. k434 抽獎卷(一)
    
    題目概略:抽獎卷上有兩個數字，如果第二個數字是3、5、8得200，第一個數字是奇數得100，兩個數字相等得50，如果重複中獎金額以最高者計算，輸出中了多少錢
```python=
a,b=map(int,input().split()) #輸入抽獎卷上的兩個號碼
sum=0 #將中獎金額設為0
if a==b: #如果兩數相等將中獎金額設為50
    sum=50
if a%2==1: #如果第一個數為奇數將中獎金額設為100
    sum=100
if b==3 or b==5 or b==8: #如果第二個數為3、5、8將中獎金額設為200
    sum=200
#採用這個順序進行判斷是因為50<100<200，若按照題目的順序判斷中獎金額可能會改變
print(sum) #輸出金額
```
11. k435 抽獎卷(二)

    題目概略:抽獎卷上有兩個數字，如果第二個數字是3、5、8贏200，第一個數字是奇數贏100，兩個數字相等贏50，如果重複中獎金額可累加，輸出中了多少錢
```python=
a,b=map(int,input().split()) #輸入抽獎卷上的兩個號碼
sum=0 #將中獎金額設為0
if a==b: #如果兩數相等將中獎金額加50
    sum+=50
if a%2==1: #如果第一個數為奇數將中獎金額加100
    sum+=100
if b==3 or b==5 or b==8: #如果第二個數為3、5、8將中獎金額加200
    sum+=200
#採用這個順序進行判斷是因為50<100<200，若按照題目的順序判斷中獎金額可能會改變
print(sum) #輸出金額
```
12. k436 偶數

    題目概略：給一個數n，若為偶數則一直除以2，直到變成奇數為止，並輸出這個數
```python=
n=int(input()) #輸入一個數n
while(n%2==0): #若為偶數則繼續除以2
    n//=2
print(n) #輸出最後結果
```
13. k437 細菌

    題目概略：有一種細菌每次分裂數量會變為原來的4倍，現給定兩數n、m，代表有多少個細菌及目標細菌數量，輸出需要分裂幾次才會大於等於目標細菌數量
```python=
n,m=map(int,input().split()) #輸入n,m
a=0 #將分裂次數設為0
while(n<m): #如果細菌數小於目標細菌數則繼續執行迴圈
    a+=1 #分裂次數加1
    n*=4 #細菌數量變為原來的4倍
print(a) #輸出分裂次數
```
14. k472 打蚊比賽

    題目概略：現有4組人比賽打蚊子，每一組人數不同，給定他們打蚊子的數量，輸出是第幾組打最多蚊子及打到蚊子的數量
```python=
group=0 #將答案設為第0組
new=[] #建立一個新數組，代表每一組打蚊子的數量
for i in range(4): #因為有4組，執行此迴圈4次
    arr=list(map(int,input().split())) #輸入每一個人打蚊子的數量
    x=sum(arr) #將每一個人打蚊子的數量加總
    new.append(x) #將打到的蚊子總數存到new陣列中
max=0 #將答案設為0隻
for i in range (4): #因為有4組，執行此迴圈4次
    if new[i]>max: #如果這個組別打的蚊子數量大於原本的最大值，執行此敘述
        max=new[i] #將最大值重設
        group=i+1 #將組別改為這一組，因為陣列i從0開始，需加1
print(group,max,sep=" ") #輸出答案，中間以空格隔開
```
15. k473 尋找HAPPY
    
    題目概略：有3組陣列，每個陣列有多個字串，請在這些字串中找到"HAPPY"，若有則輸出是位於第幾組陣列的第幾個字串，若無則輸出"NO"
```python=
flag=0 #假設找不到"HAPPY"
n=0 #設定在第0組陣列
m=0 #設定索引值為0
for i in range(3): #由於有3組陣列，故跑3次
    arr=input().split() #輸入陣列
    if "HAPPY" in arr: #搜尋是否有"HAPPY"
        n=i+1 #若有，則將答案設為i+1(因為index從0開始)
        m=arr.index("HAPPY")+1 #若有，則將答案設為index+1(因為index從0開始)
        flag=1 #找到"HAPPY"，設為1
if flag==1: #若有找到"HAPPY"則輸出n,m
    print(n,m,sep=' ')
else: #若沒有找到"HAPPY"則輸出"NO"
    print("NO")
```
16. k474 促銷果凍

    題目概略：今天你買了n個果凍，已知每3個空果凍盒可以換1個果凍，請問你可以吃到多少果凍
```python=
n=int(input()) #輸入買了n個果凍
sum=n #將吃到的果凍的總數一開始設為購買的數量
while n>=3: #若空果凍盒數量大於等於3盒可以一直換
    sum+=n//3 #將吃到的果凍數量加上空果凍盒整除3的數量，代表多吃到的果凍
    n=n//3+n%3 
'''
將原本空果凍盒數量再整除3，代表現在的空果凍盒的數量，
若空果凍盒非3的倍數，會有空的果凍盒沒被拿去換果凍，須加上之前沒換到的
'''
print(sum) #輸出能吃到的果凍總數
```
17. k545 促銷冰棒

    題目概略：今天你買了n枝冰棒，已知每6枝冰棒棍可以換1枝冰棒，請問你可以吃到多少冰棒
```python=
n=int(input()) #輸入買了n枝冰棒
sum=n #將吃到的冰棒的總數一開始設為購買的數量
while n>=6: #若冰棒棍數量大於等於6枝可以一直換
    n-=5 #因為6枝冰棒棍可以換一枝冰棒，實際消耗5枝冰棒棍
    sum+=1 #每消耗6枝冰棒棍換一枝冰棒
print(sum) #輸出能吃到的冰棒總數
```
18. k546 次方 十位數
    
    題目概略：求17的n次方的十位數字
```python=
n=int(input()) #輸入n
sum=1 #17的0次為1
while (n>0): #若n大於0則sum一直乘以17
    sum=sum*17
    n-=1 #每乘一次17，n減1
sum=sum%100 #利用取餘數，取sum的後兩位數字
sum=sum//10 #再利用整除10求十位數字
print(sum) #輸出十位數
```
19. k547 次方 百位數
    
    題目概略：求18的n次方的百位數字
```python=
n=int(input()) #輸入n
if n==0 or n==1: #因為18的0次跟1次沒有百位數，故百位數為0
    c=str(0)
else: #其餘數字先求18的n次，再把數字轉為字串，求倒數第三個字元即為百位數
    sum=str(18**n)
    c=sum[-3]
print(c) #輸出百位數
```
20. h913 可以被6整除的和

    題目概略：一個數字n，代表接下來有n個數，求這n個數被6整除的和
```python=
n=int(input()) #輸入n
sum=0 #將總和設為0
arr=input() 
arr=[int(x) for x in arr.split()] #輸入陣列
index=len(arr)-1 #求陣列最後一個值的索引
while index>=0: #若索引值大於等於0繼續判斷
    if arr[index]%6==0: #若這個數可以被6整除則相加
        sum+=arr[index]
    index-=1 #每次做完index減1
print(sum) #輸出結果
```
21. i649 總和計算

    題目概略：一開始有一個數字n，代表接下來有幾個a,b，請求出在a,b之間可以被3或4整除，但無法被5整除的數之和
```python=
n=int(input()) #輸入n
for i in range(n): #要做n次
    sum=0 #先將總和設為0
    a,b=map(int,input().split()) #輸入a,b
    for i in range(a,b+1,1): #代表從a開始判斷，到b結束
        if (i%3==0 or i%4==0) and i%5!=0: #如果可以被3或4整除，但無法被5整除，就相加
            sum+=i
    print(sum) #輸出總和
```
22. h915 輸出最大值

    題目概略：有一個數n，接下來有n組a,b，請輸出兩者的最大值
```python=
n=int(input()) #輸入n
for i in range(n): #要做n次
    a,b=map(int,input().split()) #輸入a,b
    Max=max(a,b) #求兩數最大值
    print(Max) #輸出MAX
```