题解 | #[NOIP2015]金币#

[NOIP2015]金币

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

#include <stdio.h>
long facSum(long t){      //计算阶乘和,用来计算是第几波,比如第六天就是3!,主函数里用m来记录第三波
    long sum=0;
    for(long i=1;i<=t;i++)
       sum+=i;
    return sum;
}
int main()
{
    long k,sum=0;
    scanf("%ld",&k);
    
    long m=1;       //用来记录到第几波
    while(1){
        if(k>=facSum(m)&&k<facSum(m+1)) break;
     m++;
    }
    for(long i=1;i<=m;i++)  //只用遍历从1到波数即可,比如k=6时,就是第三波,就1+2*2+3*3
       {
          sum+=i*i;
       }

    printf("%ld",sum+(k-facSum(m))*(m+1));   //结果再加上(剩下的天数*第m+1波),比如k=8,最后要加上(8-3!)*(3+1)
    return 0;
}

全部评论

相关推荐

给🐭🐭个面试机会吧:我boss直聘天天有家教跟我打招呼😓
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务