Hdu 1868 Consecutive sum解题分析

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1868

题意:给1个整数n,表示成连续整数的和,看有几种方法。
如:15 = 1+2+3+4+5 = 4+5+6 = 7+8,结果为3。

设n可以表示成i个连续整数之和,首项为a,则n=a+(a+1)+……(a+i-1)=i*a+(1+2+……+(i-1))=i*a+(i*(i-1)/2)
-->a=(n-(i*(i-1)/2))/i

所以我们可以按当前程度i从可能的最大长度k到2(若15=15也算则到1)去试,若能求得首项为整数(可以

通过是否能整除判断),则可以表示成i个整数之和。
那么可能的最大长度k如何求?显然,当从1开始加时长度可能到最大。所以若1+2+……+k>=n则k为可能的最

大长度。这么做效率差些,但比较容易理解。
Hdu 2058也可以用类似方法求解。

 

很多问题,写写画画,可能就比较有想法了。光一个脑袋空想,很可能要多浪费好些时间。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值