关于open judge 国王的金币的解法(适用于初学者)

关于 open judge上的国王的金币解法(适用于初学者)
原题:
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。

你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。

输入
一个整数(范围1到10000),表示天数。
输出
骑士获得的金币数。
样例输入
6
样例输出
14

我的解法(运用while for 和if语句)
解法如下
#include
using namespace std;
int main()
{
int a,b,i,n;
cin>>a;
b=0;
i=0;
n=0;
while(n {
i++; //i是每天获得的金币数,也是每组天数
for(int j=1;j<=i;j++) // 用j作为循环判别符
{
b=b+i; //b为获得的总金币数
if(n else b=b-i; //因为在计算最后一组的时候,会出现天数不能正好凑够组数的情况,就比如这个骑士只工作5天,应为1+2+2+3+3,但我的for循环会计算到1+2+2+3+3+3,所以n>a的天数要减去3.
}
}
cout< }
解题思想: 因为通式是1+2+2+3+3+3+4+4+4+4…
将每个获得相同金币数的分为一组,每组比前面多一天
所以运用循环语句是最适于初学者的解法
循环语句有while,for和do while
常用的就是for 和while
但在这里while是比较好用的
然后运用while和for的嵌套 ,再加一个if语句来判定

因为我是一名大一学生,刚接触c++两个月,在open juidge上做题的时候遇到不会的,搜题的时候搜到的全都是一些很高深的解法,根本不适用于我这种初学者,所以我就在这里,以我为例,分享一些适用于我这种初学者的解法,在open judge上通过的算法,我才会在此分享,请放心我写的正确性。
这是我第一次写博客,要是有写的不好的地方欢迎指正,谢谢啦。

你可能感兴趣的:(关于open judge 国王的金币的解法(适用于初学者))