中级天翼
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分
缔造者之神
建议大家把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…………这些数外的数都是不符合的)
望采纳!(送给我这么多豆子,我都不好意思了)