解题思路:首先要找到本题的规律, 我们把这些天数分成几个阶段用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;

}


点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论