## 資訊小考題目整理
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
```