問題描述
給定 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月25日 星期四
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')
三角形 除了是最基本的多邊形外, 除了是最基本的多邊形外, 亦可 進一步細分為鈍角三形、直及 進一步細分為鈍角三形、直及 進一步細分為鈍角三形、直及 銳角 三角形。 三角形。 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 若給定三個線段的長度,透過下列公式運算即可得知此能否構成 三角形,亦可判斷是直、銳攪和鈍。
提示:若 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')
2018年1月9日 星期二
2017.3月大學程式設計先修檢測 實作題 第一題(秘密差)
問題描述
將一個十進位正整數的奇和稱為 A,偶數位的和稱為 ,偶數位的和稱為 B,則 A與 B的絕 對差值 |A -B| 稱為這個正整數的秘密差。 稱為這個正整數的秘密差。
例如: 263541 的奇數位和 A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12 A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12 A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12 ,偶數位的和 B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9,所以 263541 的秘密差是 |12|12 -9|= 39|= 39|= 39|= 3 。
給定一個 十進位正整數 X,請找出 X的秘密差 秘密差 。
輸入 格式
輸入 為一行含 有一 個十進位表示法的 正整數 X,之後是一個換行字元 。
輸出 格式
請輸 出 X的秘密差 Y(以十進位表示法輸出 ),以換行字元結尾 。
範例一:輸入 範例一:輸入
26354 1
範例一:正確輸出 範例一:正確輸出
3
(說明) 263541 的 A = 6+5+1 12A = 6+5+1 12 A = 6+5+1 12 A = 6+5+1 12 A = 6+5+1 12 A = 6+5+1 12 ,B = 2+3+4 9B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9 ,|A -B|= B|= B|= B|= |12|12 -9|= 39|= 39|= 39|= 3 。
範例二:輸入 範例二:輸入
131
範例二:正確輸出 範例二:正確輸出
1
(說明) 131 的 A = 1+1 2A = 1+1 2 A = 1+1 2 A = 1+1 2 A = 1+1 2 ,B = 3B = 3B = 3B = 3 ,|A -B|= B|= B|= B|= |2 -3|= 13|= 13|= 13|= 1 。
程式碼:
import math as lp
n=input()
n=int(n)
d=lp.floor(lp.log10(n))+1
x=[]
for i in range(d):
ls=n%10
x.append(ls)
n//=10
A=0 #奇數位數和
B=0 #偶數位數和
S=0 #奇數位的奇數位數和
if (d%2)==0:
for j in range(int(d/2)):
A+=x[2*j]
B+=x[2*j+1]
print(abs(A-B))
elif (d%2)==1:
for k in range(int((d-1)/2)):
A+=x[2*k]
S=A+x[d-1]
B+=x[2*k+1]
print(abs(S-B))
將一個十進位正整數的奇和稱為 A,偶數位的和稱為 ,偶數位的和稱為 B,則 A與 B的絕 對差值 |A -B| 稱為這個正整數的秘密差。 稱為這個正整數的秘密差。
例如: 263541 的奇數位和 A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12 A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12 A = 6+5+1 12A = 6+5+1 12A = 6+5+1 12 ,偶數位的和 B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9B = 2+3+4 9B = 2+3+4 9,所以 263541 的秘密差是 |12|12 -9|= 39|= 39|= 39|= 3 。
給定一個 十進位正整數 X,請找出 X的秘密差 秘密差 。
輸入 格式
輸入 為一行含 有一 個十進位表示法的 正整數 X,之後是一個換行字元 。
輸出 格式
請輸 出 X的秘密差 Y(以十進位表示法輸出 ),以換行字元結尾 。
範例一:輸入 範例一:輸入
26354 1
範例一:正確輸出 範例一:正確輸出
3
(說明) 263541 的 A = 6+5+1 12A = 6+5+1 12 A = 6+5+1 12 A = 6+5+1 12 A = 6+5+1 12 A = 6+5+1 12 ,B = 2+3+4 9B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9B = 2+3+4 9 B = 2+3+4 9 B = 2+3+4 9 ,|A -B|= B|= B|= B|= |12|12 -9|= 39|= 39|= 39|= 3 。
範例二:輸入 範例二:輸入
131
範例二:正確輸出 範例二:正確輸出
1
(說明) 131 的 A = 1+1 2A = 1+1 2 A = 1+1 2 A = 1+1 2 A = 1+1 2 ,B = 3B = 3B = 3B = 3 ,|A -B|= B|= B|= B|= |2 -3|= 13|= 13|= 13|= 1 。
程式碼:
import math as lp
n=input()
n=int(n)
d=lp.floor(lp.log10(n))+1
x=[]
for i in range(d):
ls=n%10
x.append(ls)
n//=10
A=0 #奇數位數和
B=0 #偶數位數和
S=0 #奇數位的奇數位數和
if (d%2)==0:
for j in range(int(d/2)):
A+=x[2*j]
B+=x[2*j+1]
print(abs(A-B))
elif (d%2)==1:
for k in range(int((d-1)/2)):
A+=x[2*k]
S=A+x[d-1]
B+=x[2*k+1]
print(abs(S-B))
2018年1月5日 星期五
二拋物線四交點共圓問題
Question:
有二拋物線 y=x^2 及 (y-4)^2=4(x+3) 之四交點共圓,求此圓方程式?
答案:(x-2)^2+(y-9/2)^2=81/4
😁解答:
這是個圓系的概念,將二拋物線相加配方即為通過此四圓的圓方程式。
有二拋物線 y=x^2 及 (y-4)^2=4(x+3) 之四交點共圓,求此圓方程式?
答案:(x-2)^2+(y-9/2)^2=81/4
😁解答:
這是個圓系的概念,將二拋物線相加配方即為通過此四圓的圓方程式。
2018年1月4日 星期四
利用Python解數學問題
Question:某一函數f對於非負整數n,k定義如下
- f(0,n)=n+1
- f(k,0)=f(k-1,1)
- f(k+1,n+1)=f(k,f(k+1,n)) 求f(2,3)?
程式碼如下~~~~~
def fun(k,n):
if k==0:
return n+1
elif n==0:
return fun(k-1,1)
else:
return fun(k-1,fun(k,n-1))
print(fun(2,3))
得出答案為「9」
2018年1月2日 星期二
2017.10月大學程式設計先修檢測 實作題 第一題(邏輯運算子 Logic Operators)
邏輯運算子(Logic Operators)
問題描述
小蘇最近在學三種邏輯運算子 AND、OR和XOR。這三種運算子都是二元運算子,也就是說在運算時需要兩個運算元,例如a AND b。對於整數a與b,以下三個二元運算子的運算結果定義如下列三個表格:
舉例來說:
(1) 0 AND 0 的結果為0,0 OR 0 以及0 XOR 0 的結果也為0。
(2) 0 AND 3 的結果為0,0 OR 3 以及0 XOR 3 的結果則為1。
(3) 4 AND 9 的結果為1,4 OR 9 的結果也為1,但4 XOR 9的結果為0。
請撰寫一個程式,讀入a、b 以及邏輯運算的結果,輸出可能的邏輯運算為何。
輸入格式
輸入只有一行,共三個整數值,整數間以一個空白隔開。第一個整數代表a,第二個整數代表b,這兩數均為非負的整數。第三個整數代表邏輯運算的結果,只會是0 或1。
輸出格式
輸出可能得到指定結果的運算,若有多個,輸出順序為AND、OR、XOR,每個可能的運算單獨輸出一行,每行結尾皆有換行。若不可能得到指定結果,輸出IMPOSSIBLE。(注意輸出時所有英文字母均為大寫字母。)
範例一:輸入
0 0 0
範例一:正確輸出
AND
OR
XOR
範例二:輸入
1 1 1
範例二:正確輸出
AND
OR
範例三:輸入
3 0 1
範例三:正確輸出
OR
XOR
範例四:輸入
0 0 1
範例四:正確輸出
IMPOSSIBLE
Python 程式碼:
a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
if a==0 and b==0 and c==0:
print(" AND\n OR\n XOR\n")
elif a==0 and b==0 and c!=0:
print("IMPOSSIBLE")
elif a==0 and b!=0 and c==0:
print("AND")
elif a==0 and b!=0 and c!=0:
print(" OR\nXOR")
elif a!=0 and b==0 and c==0:
print("AND")
elif a!=0 and b==0 and c!=0:
print(" OR\n XOR")
elif a!=0 and b!=0 and c==0:
print("XOR")
elif a!=0 and b!=0 and c!=0:
print(" AND\n OR")
問題描述
小蘇最近在學三種邏輯運算子 AND、OR和XOR。這三種運算子都是二元運算子,也就是說在運算時需要兩個運算元,例如a AND b。對於整數a與b,以下三個二元運算子的運算結果定義如下列三個表格:
舉例來說:
(1) 0 AND 0 的結果為0,0 OR 0 以及0 XOR 0 的結果也為0。
(2) 0 AND 3 的結果為0,0 OR 3 以及0 XOR 3 的結果則為1。
(3) 4 AND 9 的結果為1,4 OR 9 的結果也為1,但4 XOR 9的結果為0。
請撰寫一個程式,讀入a、b 以及邏輯運算的結果,輸出可能的邏輯運算為何。
輸入格式
輸入只有一行,共三個整數值,整數間以一個空白隔開。第一個整數代表a,第二個整數代表b,這兩數均為非負的整數。第三個整數代表邏輯運算的結果,只會是0 或1。
輸出格式
輸出可能得到指定結果的運算,若有多個,輸出順序為AND、OR、XOR,每個可能的運算單獨輸出一行,每行結尾皆有換行。若不可能得到指定結果,輸出IMPOSSIBLE。(注意輸出時所有英文字母均為大寫字母。)
範例一:輸入
0 0 0
範例一:正確輸出
AND
OR
XOR
範例二:輸入
1 1 1
範例二:正確輸出
AND
OR
範例三:輸入
3 0 1
範例三:正確輸出
OR
XOR
範例四:輸入
0 0 1
範例四:正確輸出
IMPOSSIBLE
Python 程式碼:
a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
if a==0 and b==0 and c==0:
print(" AND\n OR\n XOR\n")
elif a==0 and b==0 and c!=0:
print("IMPOSSIBLE")
elif a==0 and b!=0 and c==0:
print("AND")
elif a==0 and b!=0 and c!=0:
print(" OR\nXOR")
elif a!=0 and b==0 and c==0:
print("AND")
elif a!=0 and b==0 and c!=0:
print(" OR\n XOR")
elif a!=0 and b!=0 and c==0:
print("XOR")
elif a!=0 and b!=0 and c!=0:
print(" AND\n OR")
訂閱:
文章 (Atom)