解题思路:首先要找到本题的规律, 我们把这些天数分成几个阶段用k表示,由于不知道要循环多少次,所以只要天数还是大于0的就一直循环下去,用while循环。
接下来就要找到每个阶段的规律,第一阶段一枚金币持续一天,第二阶段两枚金币持续两天,第三阶段三枚金币持续三天。。。。。。
那么每一个阶段的金币总和就是k*k,k在每个阶段都要自增。
注意事项:
参考代码:
#include <stdio.h>
int main()
{
long long day;
long long k=1;
long long sum = 0;
scanf("%lld",&day);
while(day>0) {
if(day>=k)//如果天数大于当前阶段
{
sum += k*k;//计算金币总和
day -= k;//天数变化,当前阶段结束就用天数减去当前阶段的天数,进入下一个阶段
k++;//阶段自增
} else {//如果天数小于当前阶段
sum += day*k;//当前阶段每天奖励的金币还是k枚,总和就是day*k
day = 0;//计算完之后要将天数归0,避免重复循环
k++;//阶段自增
}
}
printf("%lld\n",sum);
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复