问题标题: 酷町堂:就离谱

0
0
已解决
武建豪
武建豪
中级天翼
中级天翼

1040   存储罐存钱

经验值:1200 时间限制:1000毫秒

题目描述 Description

小明刚刚买了一个存钱罐,他想把每天的零用钱都存起来。小明有一个想法:第一天,存进存储罐1块;之后两天(第二天,第三天)每天存进2块;之后的3天(第四天,第五天,第六天)每天存进去3块;再之后的4天(第七天,第八天,第九天,第十天)每天存进去4块……以此方式一直存钱进存储罐。假设存储罐无限大,可以容纳无限多的钱,且小明的零花钱也取之不尽。问从第一天开始到指定天数(由输入决定)内,存储罐里面共有多少钱?

输入描述 Input Description

输入一个整数d(1≤d≤1000000),表示存钱的天数。

输出描述 Output Description

输出一个整数,表示存储罐里面的总金额。

样例输入 Sample Input

10

样例输出 Sample Output

30

#include<iostream>

#include<fstream>

#include<algorithm>

#include<cmath>

#include<cstdio>

#include<cstring>

#include<string>

#include<iomanip>

#include<cstdlib>

#include<vector>

using namespace std;

int x,d,he,n=1;

int main(){

cin>>x;

while(d+n<=x){

d=d+n;

he=he+n*n;

n++;

}

cout<<he;

    return 0;

}

样例都过了

42分

 


0
已采纳
王文博
王文博
缔造者之神
缔造者之神

建议大家把AC代码存起来,如下:

这是我5月30号存完的,防止老师清空记录

这道题目好像是作业题吧…………

思路就是:一次一次加,加到指定天数就停下来,输出。

但是你这个代码最后一步错了:

如果是11天呢?你的输出还是30,因为他和10一样,都会跳出while循环。

所以我们要在while循环后面加上一步,考虑一下这个情况:

he=he+(x-d)*n;

x-d,就是没来得及算的天数;

n在跳出while循环时已经加过了,不用重新加了,he就是计入总量。

说实话,数据点太水了,这样的做法在考试中估计只能得到20分左右。(除1,3,6,10,15,21…………这些数外的数都是不符合的)

望采纳!(送给我这么多豆子,我都不好意思了)

我要回答