题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 n 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币。
请计算在前 k 天里,骑士一共获得了多少金币。
输入格式
一个正整数 k,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
输入输出样例
输入 #1
6
输出 #1
14
输入 #2
1000
输出 #2
29820
题目解答
这题可以用i表示天数和金币数,用s表示金币总数。
但是,这题有两种情况,要分类讨论。
- k>=i,可以发i天的金币
- k<i,只能发k天的金币
所以要加一个判断
判断是什么呢?
C++的if语句是用来判定所给的条件是否满足,并根据判断的结果true或false决定执行哪一步。
单个if语句
//如 if(x>y) { cout<<"x大于y"<<enld; }
if(表达式)语句1
else 语句2//如
if(x>y) { cout<<"x大于y"<<enld; } else { cout<<"x小于y"<<enld; }
if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
……
else if(表达式n)语句n
else 语句m//如 if(x>y) { cout<<"x大于y"<<enld; } else if(x<y) { cout<<"x小于y"<<enld; } else { cout<<"x等于y"<<enld; }
在C++中if语句是实现选择结构的主要语句,在if后面通常都有一个用括号括起来的表达式,它是程序判断的条件,一般是逻辑表达式或关系表达式。
读者需要注意if和else的配对关系,else总是与它上面最近的,且未配对的if来进行配对。
原文链接:https://blog.csdn.net/weixin_48669767/article/details/110246897
知道了if语句,就可以写代码了吗?
不!
这是需要多次循环的代码
循环又该怎么去写呢?
请看这里
好了,这下可以愉(tong)快(ku)地写代码了!
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long s=0,i=1,k;
cin>>k;
while(k>0)
{
if(k>=i) //可以分i天
s=s+i*i; //i天一共i*i个金币
else //不够分
{
s=s+k*i;//只分k天
break;//结束
}
k=k-i;//天数-i
i++; //刷新金币
}
cout<<s;
return 0;
}