2304512295 发表于 2018-3-21 22:24:42

又一道被修改的题目 c++求助

【题目描述】
国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天里,第2天收到2枚金币和第3天收到1枚金币;之后三天,第4天3枚金币,第5天2枚金币和第6天1枚金币;之后四天里,第7天4枚金币,第8天3枚金币,第9天2枚金币和第10天1枚金币……这种工资发放模式会一直这样延续下去:
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
【输入】
一个整数(范围1到10000),表示天数。
【输出】
骑士获得的金币数。
【输入样例】
8
【输出样例】
17

shigure_takimi 发表于 2018-3-22 00:01:06

本帖最后由 shigure_takimi 于 2018-3-22 00:02 编辑

## 没学过C++,来个Python版本的。
def coins(days):
        coin = 1
        a = 1
        total = 0
        for day in range(days):
                total += coin
                coin -= 1
                if coin == 0:
                        a += 1
                        coin = a
        return total
print(coins(1))
print(coins(2))
print(coins(3))
print(coins(8))
print(coins(10000))

##结果:
##1
##3
##4
##17
##477125

兜里没钱 发表于 2018-3-22 01:11:12

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define Uint unsigned int

//计算并返回总合
Uint fun(Uint a)
{
        Uint i=1,j,k=0,sum=0;
        if (a == 0) return 0;

        while(1)
        {
                for(j=i;j;j--)
                {
                        k++;
                        sum+=j;
                        //printf("武士第%u天的收入是%u,合计%u\n",k,j,sum);
                        if(a==k) return sum;
                }
                i++;
        }
}



int main(void)
{
        Uint a;
        printf("请输入你要查询的天数:");
        scanf("%u",&a);
        printf("\n第%u天武士的收入合计是:%u\n",a,fun(a));
}

2304512295 发表于 2018-3-22 20:20:02

兜里没钱 发表于 2018-3-22 01:11
#define _CRT_SECURE_NO_WARNINGS
#include
#define Uint unsigned int


谢谢,我知道了

luobo1325 发表于 2018-3-22 21:09:29

非常不错,支持好贴,加油加油
页: [1]
查看完整版本: 又一道被修改的题目 c++求助