NOIP 2015 普及组 复赛 coin 金币
1.数据规律还是比较简单1^1+2^2+3^2+4^2+5^2
2.设置一个自减的循环,一次减1,2,3,特别注意最后边界的处理,即可。
3.有一个顾虑,用int 还是long long即数据是否会越界。先用int,之后测试。
4.经测试,整数不越界。用int即可。
5.程序难点在于边界出列,一不小心,容易犯错,要在边界进行测试,跟踪。
6.提交,40分,一查,才发现跟踪代码未删除,真是很遗憾。
7.提交程序前,多进行测试,很是必要。
附上AC代码,编译环境Dev-C++4.9.9.2
#include <stdio.h>
int main(){
int k;
int ans;
int i;
scanf("%d",&k);
//初始化
i=1;
ans=0;
while(k>0){
k=k-i;
ans+=i*i;
i++;
}
if(k==0)
printf("%d\n",ans);
else{//边界处理
i--;//回退数据
ans-=i*i;//回退数据
k+=i;
ans+=i*k;
printf("%d\n",ans);
}
return 0;
}