pku3101 Astronomy

题目连接:http://162.105.81.212/JudgeOnline/problem?id=3101

题意简述:求若干个行星的位置刚好组成直线的周期。

解题思路:这题想了很久,才发现想错方向了,开始一直往同余方向去想了,yy了好久勉强建了几个草稿方程,但这个方法很快就被否决了,实在想不出了。。。 在别人的提示下,有了如下思路:

把相同的周期合并,然后用把所有周期串起来,即求出经过多少时间,他们能相差180度(t[i]*t[i-1]/((t[i]-t[i-1])*2)),然后求最小公倍数,由于是对分数求最小公倍数,于是分别设两分数为a/b,c/d,则最小公倍数为:lcm(a,c)/gcd(b,d)。

简单证明:

lcm(a/b,c/d)=lcm(a*d,b*c)/(b*d)=lcm(a,c)*lcm(b,d)/(b*d)。

这题如果直接按朴素的方法算会溢出,于是要用高精度求lcm和gcd。

lrj黑书上写到:

gcd(a,b)=p1^min(a1,b1)*p2^min(a2,b2)……pn^min(an,bn),

lcm(a,b)=p1^max(a1,b1)*p2^max(a2,b2)……pn^max(an,bn)。

最近不在状态,高精度太麻烦了,留着以后再写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值