频道栏目
首页 > 资讯 > 其他 > 正文

【杭电OJ从头刷】HDU1001

17-01-04        来源:[db:作者]  
收藏   我要投稿

http://acm.hdu.edu.cn/showproblem.php?pid=1001

 

#include
int main()
{
	int i,n;
	while(scanf("%d",&n) !=EOF)
	{
		int sum=0;
		for(i=1;i<=n;i++)
		{
			sum+=i;
		}
		printf("%d\n\n",sum);
	}
}

 

 

#include
int main()
{
	int n;
	long result;
	while(scanf("%ld",&n) !=EOF)
	{
		if(n%2==0)
		{
			result = n/2*(1+n);
		}
		else
		{
			result = (1+n)/2*n;
		}
		printf("%ld\n\n",result);
	}
}

由题意可知,计算的结果不会超过32bit,我们很容易想到的方法就是直接使用for循环相加求和。

另一种方法就是使用等差数列的求和公式,然而存在的问题就是在进行 n*(n+1) 运算的时候,可能会超出存储的范围,所以我们可以考虑,先进行除法运算,这样就保证了结果的合法性。

最后我们需要注意的一点就是,该题的输出格式为每条数据后需要进行两次换行。

相关TAG标签
上一篇:SSH框架之Struts的Action的开发、通配符、路径匹配原则(了解即可)
下一篇:spring框架及spring cloud框架主要组件
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站