#29134: (Python) 歡迎Python其他解法來交流 想多學習其他方法


chiugt0817@gmail.com (Bonjour)

學校 : 臺北市立陽明高級中學
編號 : 157566
來源 : [223.136.30.133]
最後登入時間 :
2022-06-09 21:07:52
c295. APCS-2016-1029-2最大和 -- 2016年10月APCS | From: [36.224.215.139] | 發表日期 : 2022-01-31 17:26

#解題思路

# 1)讓他能成功輸入 2)放入陣列 且陣列為二維 3)在每個2D中找出較大的值 求和的Max 4)根據被選到的陣列順序 回傳可整除Max的值

#[[3, 4], [7, 5], [3, 9]]

 

 
#29135: Re:(Python) 歡迎Python其他解法來交流 想多學習其他方法


chiugt0817@gmail.com (Bonjour)

學校 : 臺北市立陽明高級中學
編號 : 157566
來源 : [223.136.30.133]
最後登入時間 :
2022-06-09 21:07:52
c295. APCS-2016-1029-2最大和 -- 2016年10月APCS | From: [36.224.215.139] | 發表日期 : 2022-01-31 17:27

#解題思路

# 1)讓他能成功輸入 2)放入陣列 且陣列為二維 3)在每個2D中找出較大的值 求和的Max 4)根據被選到的陣列順序 回傳可整除Max的值

#[[3, 4], [7, 5], [3, 9]]

 

完整程式碼

N,M=map(int,input().split())

list1=[]

list2=[]

list3=[]

for i in range(N):

  arr=list(map(int,input().split()))

  list1.append(arr)

  list2.append(max(arr))

Max1=sum(list2)

for j in list2:

  if Max1%j==0:

    list3.append(j)

print(Max1)

print("-1") if list3==[] else print(*list3)

 
#29137: Re:(Python) 歡迎Python其他解法來交流 想多學習其他方法


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
c295. APCS-2016-1029-2最大和 -- 2016年10月APCS | From: [36.238.25.111] | 發表日期 : 2022-01-31 21:17

#解題思路

# 1)讓他能成功輸入 2)放入陣列 且陣列為二維 3)在每個2D中找出較大的值 求和的Max 4)根據被選到的陣列順序 回傳可整除Max的值

#[[3, 4], [7, 5], [3, 9]]

 

完整程式碼

N,M=map(int,input().split())

list1=[]  用不到

list2=[]

list3=[]

for i in range(N):

  arr=list(map(int,input().split()))

  list1.append(arr)  用不到

  list2.append(max(arr))

Max1=sum(list2)

for j in list2:

  if Max1%j==0:

    list3.append(j)

print(Max1)

print("-1") if list3==[] else print(*list3)



  • 你的list1 沒有使用到,可以省略
  • 若改成如上所言,則arr只使用一次,可省去變數指派,直接放在max()裡面,即max(map(int, .....))
  • 最後一行,判斷空陣列,可直接 if not list3,或是交換方向 print(*list3) if list3 else '-1'
  • 承上述,更進階寫法可採用短路求值運算以及串列生成式達成 list3 = [j for j in list2 if Max1%j==0] or '-1'
 
#29138: Re:(Python) 歡迎Python其他解法來交流 想多學習其他方法


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
c295. APCS-2016-1029-2最大和 -- 2016年10月APCS | From: [36.238.25.111] | 發表日期 : 2022-01-31 21:20

承上述,更進階寫法可採用短路求值運算以及串列生成式達成 list3 = [j for j in list2 if Max1%j==0] or '-1'


應該這樣寫會比較正確

list3 = [j for j in list2 if Max1%j==0] or ('-1',)

 
#29139: Re:(Python) 歡迎Python其他解法來交流 想多學習其他方法


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
c295. APCS-2016-1029-2最大和 -- 2016年10月APCS | From: [36.238.25.111] | 發表日期 : 2022-01-31 21:23

我的寫法:

from sys import stdin
next(stdin)
li = [max(map(int, line.split())) for line in stdin]
ans = sum(li)
print(ans)
print(*[n for n in li if ans%n==0] or ('-1',))
 
#29201: Re:(Python) 歡迎Python其他解法來交流 想多學習其他方法


chiugt0817@gmail.com (Bonjour)

學校 : 臺北市立陽明高級中學
編號 : 157566
來源 : [223.136.30.133]
最後登入時間 :
2022-06-09 21:07:52
c295. APCS-2016-1029-2最大和 -- 2016年10月APCS | From: [36.224.219.105] | 發表日期 : 2022-02-05 01:31

我的寫法:

from sys import stdin
next(stdin)
li = [max(map(int, line.split())) for line in stdin]
ans = sum(li)
print(ans)
print(*[n for n in li if ans%n==0] or ('-1',))

 
謝謝受教了 感謝您的修正 最近在zerojudge上解題 很常會遇到超時的困擾 一直在思考要如何精簡程式

 
ZeroJudge Forum