[東方] 我沒辦法幫琪露諾找到寶藏了

作者: gggiantguy (莫笑)   2025-11-08 21:09:21




我就是那個笨蛋
我知道把A、B當成圓的直徑
圓周上每一點都可以變直角三角形
但是再然後怎麼求點座標……
作者: chinnez (稜靘)   2025-11-08 21:11:00
作者: zxcv7892341 (看中國再造共和)   2025-11-08 21:12:00
八嘎八嘎
作者: hary5155 (hary)   2025-11-08 21:15:00
我對天文密葬法稍微比較有興趣w
作者: kirimaru73 (霧丸)   2025-11-08 21:16:00
這是要你寫程式 所以還有幻想鄉沒有編譯器的問題
作者: ainamk (腰包王道)   2025-11-08 21:17:00
編譯器就是那個八雲藍 不用太擔心
作者: e5a1t20 (吃飯)   2025-11-08 21:21:00
a^2+b^2=c^2 驗證簡單,但要怎麼找比較快我就不知道了
作者: kirimaru73 (霧丸)   2025-11-08 21:21:00
仔細看了題意 他只是要你找一個座標給笨蛋探險而已那裡到底有沒有寶藏不在你的責任範圍內
作者: GY426 (GY426)   2025-11-08 21:26:00
直接窮舉 計算有沒有符合畢氏定理吧 再快就是圓跟兩條切線
作者: kirimaru73 (霧丸)   2025-11-08 21:29:00
真正麻煩的應該是輸入兩點在同一行或同一列上然後彼此距離是奇數 這樣可能會真的要窮舉搜尋不同行列 或 同一行列但距離偶數 直接傳簡單解就好了
作者: ainamk (腰包王道)   2025-11-08 21:30:00
不在同一行或同一列的話就A點的x座標+B點的y座標
作者: kirimaru73 (霧丸)   2025-11-08 21:30:00
題意有寫你不用對寶藏負責 你只要吐出座標就好
作者: emptie ([ ])   2025-11-08 21:31:00
AB都是格子點,所以(x,y) (z,w) 作為斜邊的話, (x,w) 與
作者: kaomark   2025-11-08 21:31:00
若x1!=x2且y1!=y2那x1,y2或者x2,y1就是解了
作者: kirimaru73 (霧丸)   2025-11-08 21:31:00
同一行列距離偶數:直接頂一個範圍內的45度給他
作者: iampig951753 (姆沙咪豬)   2025-11-08 21:32:00
跟老高同一間
作者: ainamk (腰包王道)   2025-11-08 21:32:00
座標完全一樣要在輸入那邊就排除 這個倒是簡單
作者: kirimaru73 (霧丸)   2025-11-08 21:33:00
寫搜尋的會大中計 因為可能會搜不到解但實際上只要輸入合法就一定有解測試資料一定會準備這種橫向搜尋會爆的內容來堵人
作者: ainamk (腰包王道)   2025-11-08 21:39:00
其實這出題也有點微妙 東方+程設應該要算三途川的寬度才對
作者: kirimaru73 (霧丸)   2025-11-08 21:43:00
這範圍意思是保你int32夠用然後如果你中計了想用暴力搜尋 你會覺得要用int64(用浮點數的話大數字平方精確度會報掉)結果第一筆測試資料是0 0 0 1 你搜尋不出來 整題零分
作者: ainamk (腰包王道)   2025-11-08 21:47:00
我程設只有皮毛 int64會出什麼問題?
作者: kirimaru73 (霧丸)   2025-11-08 21:57:00
不是int64的問題 是你以為輸入兩點必是斜邊的問題題目實際上沒這個條件 所以他敢保證一定有解但你一定是誤以為有這個條件才會走到畢氏定理搜尋
作者: e5a1t20 (吃飯)   2025-11-08 22:01:00
我剛剛想到只要一組解,最快就是找等腰直角三角形像0 0 4 2,就直接給2 -4,出界還有三組解可以試
作者: ainamk (腰包王道)   2025-11-08 22:02:00
他給你的點AB未必會有等腰直角三角形的格子點解
作者: e5a1t20 (吃飯)   2025-11-08 22:03:00
對,的確不能保證有解
作者: ainamk (腰包王道)   2025-11-08 22:05:00
轉90度雖然是很簡單暴力的作法但很容易超出範圍
作者: e5a1t20 (吃飯)   2025-11-08 22:08:00
實際解應該是兩條垂直線,還有以兩點為直徑的圓
作者: ainamk (腰包王道)   2025-11-08 22:09:00
他給你的是兩個格子點所以兩條垂直線你已經有了 不需要圓
作者: e5a1t20 (吃飯)   2025-11-08 22:14:00
可是剛剛才說格子點不一樣有解,有可能出界,然後給你狠一點來個xy互質的座標,保證中間找不到整數點*不一定有解
作者: kirimaru73 (霧丸)   2025-11-08 22:16:00
一定有解 題目的保證有解的意思其實是這樣:「如果你能想到其實這麼簡單,那當然一定有解」範圍是正方形不是圓形 不同行列輸入你就吐一個直角點同行列輸入你就轉90度加一或減一(確認邊界方向)
作者: ainamk (腰包王道)   2025-11-08 22:18:00
不只保證有解而且保證兩個 但講出有兩個等於破梗XD
作者: kirimaru73 (霧丸)   2025-11-08 22:19:00
如果是其它製造直角三角形的方式 出題者的測試資料一定會準備那種方式會爆掉的輸入只要你任何一筆資料答不出來 他甚至有理由給整題零分
作者: jpadesky (何も知らない老人(′・ω・‵)   2025-11-08 22:21:00
他的問題對人很好耶,在實數上求點
作者: ainamk (腰包王道)   2025-11-08 22:21:00
xy座標軸上不會出現實數以外的東西吧…
作者: kirimaru73 (霧丸)   2025-11-08 22:22:00
這題比較微妙的是 他是程式題 程式沿著一個方向搜尋是很合理的想像 但這題只要一想到搜尋就是死
作者: ainamk (腰包王道)   2025-11-08 22:23:00
比較大的問題是原po給了一個很大的雜音讓人會想要搜尋XD不然你看例題裡的輸入輸出應該很直覺會想到拉長方形
作者: kirimaru73 (霧丸)   2025-11-08 22:28:00
我看到例題有想到當斜邊就很簡單 然後「如果同行列的話就沒這麼簡單了」 然後就爆了
作者: logstar11 (self)   2025-11-08 22:41:00
先平移讓任一點為原點 在取剩下那個點的隨便軸投影
作者: ainamk (腰包王道)   2025-11-08 22:44:00
平移到原點可能會讓另一點跑出定義範圍 直接取(x1,y2)就好
作者: usoko (time to face reality)   2025-11-08 23:18:00
「有多解輸出任意一組即可」 那就超簡單了 又不是要你算有幾種解....
作者: civic0960 (彩虹獨角獸)   2025-11-08 23:37:00
這算基礎題吧 感覺大學程設寫過類似的
作者: neetarashi (無薪加班)   2025-11-09 02:03:00
斜邊的情況x1!=x2 y1!=y2輸出x1 y2就好反過來說ifx1==x2 的情況就是輸出x1+1 y1同理處理y1==y2 暴力破解法但這種題目很可能會有10^9做邊的情況去gank +1所以要選座標小的那邊去加 應該就能符合條件了
作者: soem (流水)   2025-11-09 10:22:00
加個判斷,盡量往原點歪過去就好了;阿但是2^32不會爆啦喔對喔,超出定義域了,還是要避開

Links booklink

Contact Us: admin [ a t ] ucptt.com