avatar

CTF-JarvisOJ-Basic-公倍数

请计算1000000000以内3或5的倍数之和。

如:10以内这样的数有3,5,6,9,和是23

请提交PCTF{你的答案}

对于这道题,我查阅了一下资料,网上的方法是for循环到10E,但是这样十分的慢。
其实是有简单的解法的,可以使用数列的知识。
我们先算出3 6 9 12 …… 999999999 的和,只需算出Sn的通项公式就可以了
同理我们算出5的倍数求和的通项公式Bn,和15倍数求和的通项公式Cn
那么答案便是 Sn+Bn-Cn,减去Cn是因为既是三的倍数又是五的倍数的和加了两次,所以我们需要减去一次

我们使用python去解决这道题目

1
2
3
4
a = (3*333333333+3)*333333333/2
b = (5*199999999+5)*199999999/2
c = (15*66666666+15)*66666666/2
print ("%d"%(a+b-c))

最后答案:PCTF{233333333166666668}

文章作者: 咲夜南梦
文章链接: http://yoursite.com/2018/11/20/CTF-JarvisOJ-Basic-%E5%85%AC%E5%80%8D%E6%95%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论