PTT推薦

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

看板C_Chat標題[東方] 我沒辦法幫琪露諾找到寶藏了作者
gggiantguy
(莫笑)
時間推噓21 推:21 噓:0 →:53

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 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.253.49 (臺灣)
PTT 網址

chinnez11/08 21:11https://i.imgur.com/XgsapNC.jpeg

zxcv789234111/08 21:12八嘎八嘎

hary515511/08 21:15我對天文密葬法稍微比較有興趣w

kirimaru7311/08 21:16這是要你寫程式 所以還有幻想鄉沒有編譯器的問題

ainamk11/08 21:17編譯器就是那個八雲藍 不用太擔心

e5a1t2011/08 21:21a^2+b^2=c^2 驗證簡單,但要怎麼找比較快我就不知道了

kirimaru7311/08 21:21仔細看了題意 他只是要你找一個座標給笨蛋探險而已

kirimaru7311/08 21:22那裡到底有沒有寶藏不在你的責任範圍內

GY42611/08 21:26直接窮舉 計算有沒有符合畢氏定理吧 再快就是圓跟兩條切線

kirimaru7311/08 21:29真正麻煩的應該是輸入兩點在同一行或同一列上

kirimaru7311/08 21:29然後彼此距離是奇數 這樣可能會真的要窮舉搜尋

kirimaru7311/08 21:30不同行列 或 同一行列但距離偶數 直接傳簡單解就好了

ainamk11/08 21:30不在同一行或同一列的話就A點的x座標+B點的y座標

kirimaru7311/08 21:30題意有寫你不用對寶藏負責 你只要吐出座標就好

emptie11/08 21:31AB都是格子點,所以(x,y) (z,w) 作為斜邊的話, (x,w) 與

kaomark11/08 21:31若x1!=x2且y1!=y2那x1,y2或者x2,y1就是解了

emptie11/08 21:31(z,y) 都是符合條件的點

kaomark11/08 21:31如果有相等的再看x還y哪個數字加減1就也能當解啊

kirimaru7311/08 21:31同一行列距離偶數:直接頂一個範圍內的45度給他

emptie11/08 21:31再處理在座標一樣的情況

kirimaru7311/08 21:31啊對 幹 我是笨蛋 我被直角的位置所束縛了

kirimaru7311/08 21:32所以這題實際上不用搜尋

iampig95175311/08 21:32跟老高同一間

ainamk11/08 21:32座標完全一樣要在輸入那邊就排除 這個倒是簡單

kirimaru7311/08 21:33寫搜尋的會大中計 因為可能會搜不到解

kirimaru7311/08 21:33但實際上只要輸入合法就一定有解

kirimaru7311/08 21:33測試資料一定會準備這種橫向搜尋會爆的內容來堵人

ainamk11/08 21:39其實這出題也有點微妙 東方+程設應該要算三途川的寬度才對

kirimaru7311/08 21:43這範圍意思是保你int32夠用

kirimaru7311/08 21:45然後如果你中計了想用暴力搜尋 你會覺得要用int64

kirimaru7311/08 21:45(用浮點數的話大數字平方精確度會報掉)

kirimaru7311/08 21:45結果第一筆測試資料是0 0 0 1 你搜尋不出來 整題零分

ainamk11/08 21:47我程設只有皮毛 int64會出什麼問題?

kirimaru7311/08 21:57不是int64的問題 是你以為輸入兩點必是斜邊的問題

kirimaru7311/08 21:57題目實際上沒這個條件 所以他敢保證一定有解

kirimaru7311/08 21:58但你一定是誤以為有這個條件才會走到畢氏定理搜尋

e5a1t2011/08 22:01我剛剛想到只要一組解,最快就是找等腰直角三角形

e5a1t2011/08 22:02像0 0 4 2,就直接給2 -4,出界還有三組解可以試

ainamk11/08 22:02他給你的點AB未必會有等腰直角三角形的格子點解

e5a1t2011/08 22:03對,的確不能保證有解

ainamk11/08 22:05轉90度雖然是很簡單暴力的作法但很容易超出範圍

e5a1t2011/08 22:08實際解應該是兩條垂直線,還有以兩點為直徑的圓

ainamk11/08 22:09他給你的是兩個格子點所以兩條垂直線你已經有了 不需要圓

e5a1t2011/08 22:14可是剛剛才說格子點不一樣有解,有可能出界,然後給你狠

e5a1t2011/08 22:14一點來個xy互質的座標,保證中間找不到整數點

e5a1t2011/08 22:15*不一定有解

kirimaru7311/08 22:16一定有解 題目的保證有解的意思其實是這樣:

kirimaru7311/08 22:16「如果你能想到其實這麼簡單,那當然一定有解」

kirimaru7311/08 22:17範圍是正方形不是圓形 不同行列輸入你就吐一個直角點

kirimaru7311/08 22:17同行列輸入你就轉90度加一或減一(確認邊界方向)

ainamk11/08 22:18不只保證有解而且保證兩個 但講出有兩個等於破梗XD

kirimaru7311/08 22:19如果是其它製造直角三角形的方式 出題者的測試資料一

kirimaru7311/08 22:19定會準備那種方式會爆掉的輸入

kirimaru7311/08 22:19只要你任何一筆資料答不出來 他甚至有理由給整題零分

jpadesky11/08 22:21他的問題對人很好耶,在實數上求點

ainamk11/08 22:21xy座標軸上不會出現實數以外的東西吧…

kirimaru7311/08 22:22這題比較微妙的是 他是程式題 程式沿著一個方向搜尋

kirimaru7311/08 22:23是很合理的想像 但這題只要一想到搜尋就是死

ainamk11/08 22:23比較大的問題是原po給了一個很大的雜音讓人會想要搜尋XD

ainamk11/08 22:24不然你看例題裡的輸入輸出應該很直覺會想到拉長方形

kirimaru7311/08 22:28我看到例題有想到當斜邊就很簡單 然後「如果同行列的

kirimaru7311/08 22:28話就沒這麼簡單了」 然後就爆了

logstar1111/08 22:41先平移讓任一點為原點 在取剩下那個點的隨便軸投影

ainamk11/08 22:44平移到原點可能會讓另一點跑出定義範圍 直接取(x1,y2)就好

usoko11/08 23:18「有多解輸出任意一組即可」 那就超簡單了 又不是要你算有

usoko11/08 23:18幾種解....

civic096011/08 23:37這算基礎題吧 感覺大學程設寫過類似的

neetarashi11/09 02:03斜邊的情況x1!=x2 y1!=y2輸出x1 y2就好

neetarashi11/09 02:03反過來說ifx1==x2 的情況就是輸出x1+1 y1

neetarashi11/09 02:03同理處理y1==y2 暴力破解法

neetarashi11/09 02:05但這種題目很可能會有10^9做邊的情況去gank +1

neetarashi11/09 02:05所以要選座標小的那邊去加 應該就能符合條件了

soem11/09 10:22加個判斷,盡量往原點歪過去就好了;阿但是2^32不會爆啦

soem11/09 10:22喔對喔,超出定義域了,還是要避開