题解 | #[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;
}
三奇智元机器人科技有限公司公司福利 70人发布
查看25道真题和解析
