作者 gggiantguy (莫笑)
標題 [東方] 我沒辦法幫琪露諾找到寶藏了
時間 Sat Nov  8 21:09:21 2025



http://i.imgur.com/lpY0c1t.jpg
[圖]
http://i.imgur.com/YZZTKem.jpg
[圖]
我就是那個笨蛋
我知道把A、B當成圓的直徑
圓周上每一點都可以變直角三角形
但是再然後怎麼求點座標……

--
https://imgur.com/bjxF4BZ
From #01 Undertaker, to #23 Handler One.

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.253.49 (臺灣)
※ 作者: gggiantguy 2025-11-08 21:09:21
※ 文章代碼(AID): #1f3q473E (C_Chat)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1762607367.A.0CE.html
[圖]
zxcv7892341: 八嘎八嘎2F 11/08 21:12
hary5155: 我對天文密葬法稍微比較有興趣w3F 11/08 21:15
kirimaru73: 這是要你寫程式 所以還有幻想鄉沒有編譯器的問題4F 11/08 21:16
ainamk: 編譯器就是那個八雲藍 不用太擔心5F 11/08 21:17
e5a1t20: a^2+b^2=c^2 驗證簡單,但要怎麼找比較快我就不知道了6F 11/08 21:21
kirimaru73: 仔細看了題意 他只是要你找一個座標給笨蛋探險而已
那裡到底有沒有寶藏不在你的責任範圍內7F 11/08 21:21
GY426: 直接窮舉 計算有沒有符合畢氏定理吧 再快就是圓跟兩條切線9F 11/08 21:26
kirimaru73: 真正麻煩的應該是輸入兩點在同一行或同一列上
然後彼此距離是奇數 這樣可能會真的要窮舉搜尋
不同行列 或 同一行列但距離偶數 直接傳簡單解就好了10F 11/08 21:29
ainamk: 不在同一行或同一列的話就A點的x座標+B點的y座標13F 11/08 21:30
kirimaru73: 題意有寫你不用對寶藏負責 你只要吐出座標就好14F 11/08 21:30
emptie: AB都是格子點,所以(x,y) (z,w) 作為斜邊的話, (x,w) 與15F 11/08 21:31
kaomark: 若x1!=x2且y1!=y2那x1,y2或者x2,y1就是解了16F 11/08 21:31
emptie: (z,y) 都是符合條件的點17F 11/08 21:31
kaomark: 如果有相等的再看x還y哪個數字加減1就也能當解啊18F 11/08 21:31
kirimaru73: 同一行列距離偶數:直接頂一個範圍內的45度給他19F 11/08 21:31
emptie: 再處理在座標一樣的情況20F 11/08 21:31
kirimaru73: 啊對 幹 我是笨蛋 我被直角的位置所束縛了
所以這題實際上不用搜尋21F 11/08 21:31
iampig951753: 跟老高同一間23F 11/08 21:32
ainamk: 座標完全一樣要在輸入那邊就排除 這個倒是簡單24F 11/08 21:32
kirimaru73: 寫搜尋的會大中計 因為可能會搜不到解
但實際上只要輸入合法就一定有解
測試資料一定會準備這種橫向搜尋會爆的內容來堵人25F 11/08 21:33
ainamk: 其實這出題也有點微妙 東方+程設應該要算三途川的寬度才對28F 11/08 21:39
kirimaru73: 這範圍意思是保你int32夠用
然後如果你中計了想用暴力搜尋 你會覺得要用int64
(用浮點數的話大數字平方精確度會報掉)
結果第一筆測試資料是0 0 0 1 你搜尋不出來 整題零分29F 11/08 21:43
ainamk: 我程設只有皮毛 int64會出什麼問題?33F 11/08 21:47
kirimaru73: 不是int64的問題 是你以為輸入兩點必是斜邊的問題
題目實際上沒這個條件 所以他敢保證一定有解
但你一定是誤以為有這個條件才會走到畢氏定理搜尋34F 11/08 21:57
e5a1t20: 我剛剛想到只要一組解,最快就是找等腰直角三角形
像0 0 4 2,就直接給2 -4,出界還有三組解可以試37F 11/08 22:01
ainamk: 他給你的點AB未必會有等腰直角三角形的格子點解39F 11/08 22:02
e5a1t20: 對,的確不能保證有解40F 11/08 22:03
ainamk: 轉90度雖然是很簡單暴力的作法但很容易超出範圍41F 11/08 22:05
e5a1t20: 實際解應該是兩條垂直線,還有以兩點為直徑的圓42F 11/08 22:08
ainamk: 他給你的是兩個格子點所以兩條垂直線你已經有了 不需要圓43F 11/08 22:09
e5a1t20: 可是剛剛才說格子點不一樣有解,有可能出界,然後給你狠一點來個xy互質的座標,保證中間找不到整數點
*不一定有解44F 11/08 22:14
kirimaru73: 一定有解 題目的保證有解的意思其實是這樣:
「如果你能想到其實這麼簡單,那當然一定有解」
範圍是正方形不是圓形 不同行列輸入你就吐一個直角點同行列輸入你就轉90度加一或減一(確認邊界方向)47F 11/08 22:16
ainamk: 不只保證有解而且保證兩個   但講出有兩個等於破梗XD51F 11/08 22:18
kirimaru73: 如果是其它製造直角三角形的方式 出題者的測試資料一定會準備那種方式會爆掉的輸入
只要你任何一筆資料答不出來 他甚至有理由給整題零分52F 11/08 22:19
jpadesky: 他的問題對人很好耶,在實數上求點55F 11/08 22:21
ainamk: xy座標軸上不會出現實數以外的東西吧…56F 11/08 22:21
kirimaru73: 這題比較微妙的是 他是程式題 程式沿著一個方向搜尋是很合理的想像 但這題只要一想到搜尋就是死57F 11/08 22:22
ainamk: 比較大的問題是原po給了一個很大的雜音讓人會想要搜尋XD不然你看例題裡的輸入輸出應該很直覺會想到拉長方形59F 11/08 22:23
kirimaru73: 我看到例題有想到當斜邊就很簡單 然後「如果同行列的話就沒這麼簡單了」 然後就爆了61F 11/08 22:28
logstar11: 先平移讓任一點為原點 在取剩下那個點的隨便軸投影63F 11/08 22:41
ainamk: 平移到原點可能會讓另一點跑出定義範圍 直接取(x1,y2)就好64F 11/08 22:44

--
作者 gggiantguy 的最新發文:
點此顯示更多發文記錄