P2669 [NOIP2015 普及组] 金币
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1N+1N+1天里,每天收到N+1N+1N+1枚金币。
请计算在前KKK天里,骑士一共获得了多少金币。
输入格式
一个正整数KKK,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
输入输出样例
输入 #1
6
输出 #1
14
输入 #2
1000
输出 #2
29820
说明/提示
【输入输出样例 1 说明】
骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 1+2+2+3+3+3=141+2+2+3+3+3=141+2+2+3+3+3=14 枚金币。
对于 100%100%100%的数据,1≤K≤10,000 1 ≤ K ≤ 10,0001≤K≤10,000。
这个是AC代码:
#include <iostream>
using namespace std;
int main(){
int k,sum=0,x=0;
cin>>k;
for(int i=1;;i++)
{
for(int j=1;j<=i;++j)
{
sum+=i;
x++;
if(x>=k)
{
cout<<sum;
return 0;
}
}
}
}
这个是让人头疼的代码,也提醒自己一个细节问题。
#include <iostream>
using namespace std;
int main(){
int k,sum,x;
cin>>k;
for(int i=1;;i++)
{
for(int j=1;j<=i;++j)
{
sum+=i;
x++;
if(x>k)
{
cout<<sum;
return 0;
}
}
}
}
这个代码虽然运行结果是正确的,但是我忽略了一个细节点:变量没有初始化,变量放main函数外自动赋值为0,但在main函数内谁也不知道初始值是什么。所以将变量sum=0,x=0后,我发现我的结果是错误的。