信息学奥赛一本通:第四章的 第四节 循环嵌套1100:金币

【题目描述】

国王将金币作为工资,发放给忠诚的骑士。第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 函数或其他返回场景,必须显式处理。)

 输出      

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值