總網頁瀏覽量

顯示具有 2016.10月APCS實作題(完) 標籤的文章。 顯示所有文章
顯示具有 2016.10月APCS實作題(完) 標籤的文章。 顯示所有文章

2018年3月23日 星期五

2016.10大學程式先修檢測實作題 第三題(定時K彈)






















































@@思考方向:重新定義一新的串列,此串列會移除第i個,然後從第i+1個重新排列

程式碼:
n,m,k=input().split(' ') 
n=int(n)  #輸入n個人
m=int(m)  #每到第m個人就爆炸
k=int(k)  #k個爆彈,炸k次

#每炸掉一個,串列重新編號,成一個新的串列
def remove(list,i): 
    return list[i+1:]+list[0:i]

#n個人編號,1~N
a=[] 
for i in range(1,n+1):
    a.append(i)

# k個炸彈,炸完重新編號,每次炸新串列的第m個人
for j in range(1,k+1): 
    a=remove(a,m-1) #注意是第m個人,所以m-1

#全炸完後,新串列的第一個人即是幸運者
print(a[0]) 

===========================================
@網路看到更簡捷的碼:
data=input().split(' ')
N,M,K=map(int,data)
person=[i for i in range(1,N+1)]
index=0
for i in range(K):
    index=(index+M-1)%len(person)
    del person[index]
    if index==len(person):
        index=0

print(person[index])



2018年1月25日 星期四

2016.10大學程式先修檢測實作題 第二題(最大和)

問題描述
給定 N群數字 ,每 群都恰有 M個正整數 。若從 每群數字 中各選擇一個數字 (假設第 i群所選出數字為 ti ),將所選出的 ,將所選出的 N個數字加總即可得和 S = S = S = S = t1+t2+…+ +…+ tN。請寫程 式計算 S的最大值 (最大總和 ),並判斷各群所選出的數字是 否可以整除 S。
輸入格式
第一行有二個正整數 N和 M, 1≦ N ≦ 20 ,1≦ M ≦ 20 。
接下來的 N行 ,每一各有 M個正整數 xi ,代表一群整數, 數字與間有一個空 格,且 1≦ i ≦M,以及 1≦ xi ≦256 。
輸出格式
第一行輸出最大總和 S。
第二行按照被選擇數字 所屬群的 順序,輸出可以整除 順序,輸出可以整除 順序,輸出可以整除 順序,輸出可以整除 S的被選擇數字,與間 的被選擇數字,與間 的被選擇數字,與間 以一個空格隔開 ,最後一個數字無空白 ;若 N個被選擇數字都不能整除 個被選擇數字都不能整除 個被選擇數字都不能整除 個被選擇數字都不能整除 個被選擇數字都不能整除 個被選擇數字都不能整除 個被選擇數字都不能整除 S,就輸出 ,就輸出 ,就輸出 ,就輸出 -1。
範例一:輸入 範例一:輸入
3 2
1 5
6 4
1 1
範例一:正確輸出 範例一:正確輸出
12
6 1
(說明) 挑選的數字依序是 5, 6, 1,總和 ,總和 S=12S=12S=12 。而此三數中可整除 。而此三數中可整除 。而此三數中可整除 S的是 6與 1, 6在第二群, 在第二群, 1在第 3群所以先輸出 6再 輸出 1。注意, 1雖然也出現在第一群, 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 但她不是第一群中挑出的數字,所以順 序是先 6後 1。
範例二:輸入 範例二:輸入
4 3
6 3 2
2 7 9
4 7 1
9 5 3
範例二:正確輸出 範例二:正確輸出
31
-1
(說明) 挑選的數字依序是 挑選的數字依序是 挑選的數字依序是 挑選的數字依序是 挑選的數字依序是 挑選的數字依序是 挑選的數字依序是 挑選的數字依序是 6, 9,7,9 ,總 和 S= 31 。而此四數中沒有可整除 S的, 所以第二行輸出 -1。
程式碼:
n=int(input())
a=[];b=0 #
for i in range(n):
    data=input().split() #分開字串
    d=[int(x) for x in data] #將字串轉成文字
    a.append(d)
    a[i]=max(a[i]) #取出每一群的最大值
    b+=a[i] #將每一群的最大值相加
flag=0 #指標,若不能整除則加1
print(b)
for j in range(n):
    if b%a[j]==0: #能整除如者,則印出
        print(a[j],end=' ') #隔一空格輸出
    else:
        flag+=1
if flag==n: #若每一群的最大值皆不能整除最大和,則flag會等於群數,輸出-1
    print('-1')

2018年1月22日 星期一

2016.10月大學程式設計先修檢測 實作題 第一題(三角形辨別)

問題描述
三角形 除了是最基本的多邊形外, 除了是最基本的多邊形外, 亦可 進一步細分為鈍角三形、直及 進一步細分為鈍角三形、直及 進一步細分為鈍角三形、直及 銳角 三角形。 三角形。 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 三角形,亦可判斷是直、銳攪和鈍。
提示:若 a、b、c為三個線段的 邊長,且 c為最大值 ,則
若 a + ba + b a + b ≦ c c c c c c c c c c ,三線段 無法構成三角形
若 a × a + b a + b a + b × b < c b < c b < c b < c b < c b < c b < c × c c c ,三線段構成 鈍角三形 (Obtuse triangle) triangle) triangle)triangle)triangle)
若 a × a + ba + b a + b × b = c b = c b = c b = c b = c b = c b = c × c c c ,三線段構成 直角三形 (Right triangle) (Right triangle) (Right triangle) (Right triangle)(Right triangle) (Right triangle)(Right triangle)(Right triangle)
若 a × a + b a + b a + b × b > c b > c b > c b > c b > c b > c b > c × c c c ,三線段構成 銳角三形 (Acutecute triangle) triangle) triangle) triangle)
請設計 程式以讀入三個線段的長度判斷並輸出此可否構成 三角形 ?若可,判斷 ?若可,判斷 ?若可,判斷 並輸出其所屬三角形類型。
輸入 格式
輸入 僅一行包含 三正整數,皆 小於 30 ,00 1,兩數之間有一空白 。
輸出 格式
輸出 共有 兩行, 第一行由小而大 第一行由小而大 印出 此三正整數,兩字之間以一個空白格最後 此三正整數,兩字之間以一個空白格最後 此三正整數,兩字之間以一個空白格最後 此三正整數,兩字之間以一個空白格最後 此三正整數,兩字之間以一個空白格最後 此三正整數,兩字之間以一個空白格最後 一個數字後 不應有 空白 ;第二 行輸出三角形的類型:
若無法構成三角形 時輸出 「No 」;
若構成 鈍角三形 時輸出 「Obtuse 」;
若直角三形 時輸出 「Right 」;
若銳角三形 時輸出 「Acute 」。
程式碼:
a=input()
d=a.split()
a=[]
a=[int(x) for x in d]
b=sorted(a)
if b[0]+b[1]<=b[2]:
   print('No')
elif b[0]**2+b[1]**2==b[2]**2:
    print('Right')
elif b[0]**2+b[1]**2>b[2]**2:
    print('Acute')
elif b[0]**2+b[1]**2<b[2]**2:
    print('Obtuse')