>
>
需要GPS
yuchoxuuan
1.群主郑重提示,不是隐写,所以也就没有三板斧直接。打开看一下,发现是个路牌。
然后发现这个路牌有些高大上,能看清楚的三个地点分别是 北京,新加坡,伦敦。
感觉梗在这里
同时,因为又是北京又是伦敦的,距离少则上千公里多则上万公里,在地球上不具备这样的高速公路
所以我认为他的距离是直线距离(或者说球面距离)
本来用极坐标算了一次,结果数学不过关,失败,后来在Condor2048的提示下用球面座标搞了一下,有现成的公式可以用就是爽,然后从网上查到这三个地方的坐标。直接带进去。。。。
然后发现方程不会解,于是只好写代码逼近了
class MathCump:
@staticmethod
def Geodistance(lng1,lat1,lng2,lat2,R=6371.393):# 地球平均半径,6371km
lng1, lat1, lng2, lat2 = map(radians, [float(lng1), float(lat1), float(lng2), float(lat2)]) # 经纬度转换成弧度
dlon=lng2-lng1
dlat=lat2-lat1
a=sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
distance=2*asin(sqrt(a))*R*1000
distance=round(distance/1000,3)
return distance
def Sum_dDis(lo,la,pos=[],dis=[]): #求 (lo,la)到 pos各点距离与指定距离的绝对值差
ret = 0;
for i in range(len(pos)):
dbx = abs(MathCump.Geodistance(pos[i][0],pos[i][1],lo,la)-dis[i])
ret+=dbx
return ret
def FindMin(pos=[0,0,1e7],posl=[],disl=[],r=[]):#遍历穷举
ret=pos.copy()
o=pos[0]-r[0]
while o<=pos[0]+r[0]:
a=pos[1]-r[1]
while a<=pos[1]+r[1]:
sumd =Sum_dDis(o,a,posl,disl)
if(sumd < ret[2]) :
ret=[o,a,sumd]
print(ret)
a+=r[2]
o+=r[2]
return ret
def FindPos(pos=[],dis=[],rd=4) :
pp =[0,0,1e7]
r=[180,90,10]
for i in range(rd) :
pp=FindMin(pp,pos,dis,r)
r=[r[0]/10,r[1]/10,r[2]/10]
print('- '*20)
print("(%0.4f,%0.4f):%0.4f"%(pp[0],pp[1],pp[2]))
print('- '*20)
p = [(116+25/60,39+54/60),(103+54/60,1+16/60),(0,51.4)] #北京,新加坡,伦敦 经纬度
d=[3654.86,1565.74,11182] #标牌上的距离
t0 = datetime.now()
FindPos(p,d,6)
print('Time:' ,datetime.now()-t0)
代码水平比较低,而且使用笨办法逼近的所以效率有点低。。。
最后得到一个坐标方程
然后用谷歌地图搜一下。。。。发现掉海里了。
不过没关系,可能是我查到的城市坐标不准,而且我计算的时候认为地球是一个理想球体,你懂得,地球其实是一个不规则三轴椭球体,肯定有误差,所以缩放一下地图,发现在这个坐标旁边正好有个旅游景点
于是百度一下,发现基本上都是游记和广告
然后随手点了个进去,一拉,卧槽你看我发现了啥
然后找到了那个碑的照片,找了好几个才看清那几个数字是啥,
加上flag{}皮提交即可。
对了,那个东西虽然群主管他叫石碑,但是我真的不认为那是它的真名字,因为它太不像个碑了,我倒认为那是个球。
yuchoxuuan
yuchoxuuan Condor2048
此处修改为 数学大神,Condor2048大佬
admin
大佬牛批
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论