[算法]蜡烛问题
Posted 山寺日高未起僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]蜡烛问题相关的知识,希望对你有一定的参考价值。
问题:
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
分析:本来想设一个未知量,按这个流程走一遍,最后求得。但在实际操作中,找不到计算机表示「未知量」的方法,而且觉得按这个流程走的话会比较繁琐。于是就列了一下这个规律,也真得找到了一个规律。
n
n+1
n+2
n+3
如果不考虑n,那后缀就是一个首项为0的等差数列,如果用236减去这个等差数列的和在对(i+1)取模为零的话,就说明,符合n的变化规律。代码如下:
#include <stdio.h> int main() { int i,sum,n; n=sum=0; for(i=0;;i++){ sum+=i; if(i>0){ if((236-sum)%(i+1)==0){ n=(236-sum)/(i+1); goto out; } } } out: printf("%d\n",n); }
这里恬不知耻地用了goto语句,因为按照我的代码逻辑,要在符合一定条件后,同时跳出两个if和一个for,但我用break似乎不行,就「简单」地goto了。。。
以上是关于[算法]蜡烛问题的主要内容,如果未能解决你的问题,请参考以下文章
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]