#45963: 想詢問這題的測資格式具體是什麼?


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 臺中市立惠文高級中學
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2025-09-21 22:24:46

根據題目所述

多組測資,每組第一行是密碼的位數,若為 A 則代表結束;

接下來有兩行,分別代表 G 碼 A 和 G 碼 B

實際嘗試後發現報錯了,其實題目提示也有說就是,所以不意外。

 

我的輸入方式(python):

while True:
  length_info = input()
  if length_info == 'A':
      break
    a, b = input(), input()

 

--

 

根據題目提示所述

題目是讀到 EOF 時結束,並保證 G 碼 A 和 G 碼 B 位數相等

實際嘗試後這也是錯的,若預設 G 碼 A 和 G 碼 B 位數相等,可以過測資#0,但其他的全都會吃 IndexError

很顯然,有兩個可能的原因: (1)題目輸入格式並非三行一組, (2)測資並不保證 G 碼 A 和 G 碼 B 位數相等

 

修改後的輸入方式(python)

while True:
  try:
       length_info = input().rstrip()
      a = input().rstrip()
      b = input().rstrip()
  except EOFError:
        break

 

--

 

於是我又嘗試了第三種狀態: 考慮 G 碼 A 和 G 碼 B 長度不相等的情況

可以過測資#0,且不再報錯,但依然只有#0可以得到正確答案,其他的全錯。

 

輸入方式同上

 

--

 

到這個階段,我猜測題目的測資格式為第一行有一個G碼,代表密碼長度(?)

之後有多組測資,每組測資占用兩行,分別代表 G 碼 A 和 G 碼 B

實際嘗試後,並選擇相信所有密碼長度都是相等的,在測資#0 遇到 IndexError,但除了 #0 以外的全部都通過了

 

修改後的輸入方式(python)

input()
while True:
  try:
      num1 = input().rstrip()
      num2 = input().rstrip()
  except EOFError:
        break

 

--

 

根據幾次嘗試的結果

測資#0 的格式為每組測資三行,第一行是密碼長度(?),第二、三行代表G碼A和G碼B

測資#1 ~ 測資#3 的格式為輸入第一行為密碼長度(?),之後每組測資占用2行,分別代表G碼A和G碼B

輸入皆到 EOF 為止

 

想問我的推測是正確的嗎?

如果真是這樣,該如何調整輸入方式呢?

 

我的完整程式碼: gist(python) (內含三個不同版本,但核心算法是一致的)

 

 

#45964: Re: 想詢問這題的測資格式具體是什麼?


asnewchien@gmail.com (david)

學校 : 南投縣立旭光高級中學
編號 : 68108
來源 : [114.42.176.221]
最後登入時間 :
2025-10-04 22:52:03

測資裡面有空白行。

#45972: Re: 想詢問這題的測資格式具體是什麼?


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 臺中市立惠文高級中學
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2025-09-21 22:24:46

有了,總算能過這題了,謝謝你

 

我改成這樣讀資料,總算能 AC

while True:
  try:
      t = input().rstrip()
      if not t:
          continue
      num1 = input().rstrip()
      num2 = input().rstrip()
  except EOFError:
        break

 

讀 num1 和 num2 的那兩行一定要包在 try 裡面,不能放外面,因為 EOF 有可能出現在這兩行(#1, #2, #3 都是這樣)