[东方] 我没办法帮琪露诺找到宝藏了

楼主: gggiantguy (莫笑)   2025-11-08 21:09:21
http://i.imgur.com/lpY0c1t.jpg
http://i.imgur.com/YZZTKem.jpg
我就是那个笨蛋
我知道把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