题解 | #[NOIP2015]金币#

[NOIP2015]金币

https://www.nowcoder.com/practice/8f71f5670e6a45118d24d13868a2da9e

#include <stdio.h>

int main() {

    int k;

    //接收用户输入的天数

    scanf("%d",&k);

    //定义个变量统计最终的金币

    int sub =0;

    //因为 第一天收到一个, 第二天第三天收到两个。。。以此类推

    /*

天数         1   2 3   4 5 6   7 8 9 10   11 12 13 14 15  16 17 18 19 20 21

金币数       1    2      3        4             5                 6

每增加一个金币,就会收到金币相应的天数,根据 n*(n+1)/2   n为金币数   公式结果为最后的天数

    */

//由此可定义一个 金币的变量j为1  

    int j =1;

//然后循环天数从1开始到k天结束

    for(int i = 1;i<=k;i++)

    {

        //进来要先接收金币

        sub+=j;

        //如果天数到了n*(n+1)/2的最后那个天数时   金币数+1,继续循环金币数j的天数

        if(i==j*(j+1)/2)

        {

            j++;

        }

    }

    printf("%d",sub);

    return 0;

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务