1
已采纳
张睿杰
初级天翼
初级天翼
定义x,d=0,he=0,n=1;
输入x
while(d+n<=x)
{
d=d+n;
he=he+n*n;
n++;
}
he=he+(x-d)*n;
输出he
0
王子轩
新手光能
新手光能
定义x,d=0,he=0,n=1;
输入x;
while(d+n<=x)
{
d=d+n;
he=he+n*n;
n++;
}
he=he+(x-d)*n;
输出he和endl;
0
0
朱宇辰
初级守护
初级守护
关键代码如下:
n=(sqrt(1+8*k)-1)/2;
ans=n*(n+1)*(2*n+1)/6;
k-=n*(n+1)/2;
ans+=k*(n+1);
k为存钱的天数
题中将,每1+2+…+n算为第i个循环,n就是表示这种循环的数量,因为这种整循环,每个就是n²。然后累加这些整循环
运用了1²+2²+…+n²=n*(n+1)*(2*n+1)/6的一个公式,求出整循环存入的钱数
用总天数减去整循环的天数,这里利用了1+2+…n=n*(n+1)/2。
然后剩余的天数因为不满整循环,所以只能单独计算。最后的结果再加上第(n+1)个非整循环存的钱数。
例如:11
11代入第一个式子可以求出n=4吗,也就是有4个整循环,1+2+3+4=10<11
第二个式子可以求出这4个整循环的钱数,也就是1+4+9+16=30同样也是4*5*9/6
1=1 4=2+2=2² 9=3+3+3=3² 16=4+4+4+4=4²
第三个式子可以得出除了这四个整循环外的天数也就是11-10=1
10=1+2+3+4
第四个式子得出这整循环外存的钱1*(4+1)=5
总共就应该是30+5=35
一共存了35元
同样的:1+2+2+3+3+3+4+4+4+4+5=35.
朱宇辰在2018-02-09 19:38:34追加了内容
上面的是非循环,做法,同时也有循环做法。但是循环做法更耗时间。而数学方法更难写,需要一些公式的运用
循环做法
int i=1;
while(a+i)<=k){
a+=i;
ans+=pow(a,2);
i++;
}
ans=ans+(k-a)*i;
循环i,从1开始,直到不满足条件为止
如果累加后的天数小于总天数,说明在整循环内部,累加最终钱数。
然后相减得到非循环天数,再算出,
两者相加则为结果
0