【题目描述】
国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
【输入】
一个整数(范围1到10000),表示天数。
【输出】
骑士获得的金币数。
【输入样例】
6
【输出样例】
14
解题思路:
1先创建变量d,s,c(d为输入的整数,表示需要计算的项数,s为存储数列和的变量,初始化为0,c为计数器,记录当前已处理的项数,初始化为0)
2外层循环从1开始递增,每个数字i
重复i
次。内层循环每次迭代时,(这里我比较喜欢用for循环语句,所以前面还有一些变量没建立):
1计数器c加一
2将当前数字i加到总和s中
3检查是否小于等于所需项数a,若满足条件则输出,(注意,这里我建议要写一个跳出循环的程序,在此代码中,return 0;
的显式与否不影响功能,但显式写法可增强意图清晰度。非 main
函数或其他返回场景,必须显式处理。)
3 输出
#include <iostream>
using namespace std;
int main()
{
int a,s=0,c=0;
cin>>a;
for(int i=1;i<=a;i++)
{
for(int f=1;f<=i;f++)
{
c=c+1;
s=s+i;
if(c==a)
{
cout<<s<<endl;
return 0;
}
}
}
return 0;
}