C语言国王的金币(比较详细版)
题目:
当连续n天每天收到n枚金币后,骑士会在之后的n+1天里,每天收到n+1枚金币。
请计算在前k天里,骑士一共收获了多少枚金币。
输入:一个正整数k,表示发放金币的天数。
输出:一个正整数,即骑士收到的金币总数。
输入样例1:6,输出样例1:14;输入样例2:1000,输出样例2:29820
我的思路:
1 2 2 3 3 3 4 4 4 4...... 发现每个完整的周期都是该周期每天金币数的平方,所以关键在于找到最大应该给的金币数以及周期的个数,因此在于找到第a天所在区域内的金币数
#include
#include
int main()
{int a;scanf("%d",&a);int k=0,i=1; //i是每个周期内天数(也是金币数) long long sum=0;for(i=1;;i++) //用于找到第k天时,所在金币相同的所有金币数之和 { k=k+i;if(k>a){ //找到a所在的周期 k=k-i; //到达第k天所在周期的前一天 sum=(a-k)*i; // 与第k天所在周期金币相同的所有金币数之和 break;}}int j=1;for(j=1;j
本人比较菜,所以如果程序有问题希望能帮忙指出一下,又看不懂的我也尽量回复吼
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
