蓝桥杯练习题:序列求和(C++)
发布时间
阅读量:
阅读量
问题描述
计算从1加到n的总和。
输入形式
输入为一个整数值n。
输出结果
输出结果为整数。
测试案例
其中一项测试案例中包含4作为输入。
说明:在某些题目中,会提供多组测试案例及其对应的输出结果以帮助理解问题。
改写说明
样例输出
5050
数据规模与约定
1 <= n <= 1,000,000,000。
说明:请注意这里的数据规模。
本题最直观的想法是通过直接采用循环累加的方式解决问题;然而,在数据规模达到一定范围时(如一百万以上),这种 brute-force 方法将明显存在效率问题而导致程序运行时间超出预期限制。这时就需要思考是否存在更为高效的方法来进行优化计算了。你可以尝试一下:将数值设定为一百亿进行测试运算看是否能够在规定的时间限制内完成任务?
本题另一个值得特别注意的地方是答案数值的大小超出了你语言默认整型(int)类型所承载的数据范围。如果试图用int类型来存储这个答案值,则会导致计算结果出现偏差。
当使用C++或C语言且准备使用printf输出结果时,则格式字符串应当写成%I64d用于输出long long类型的整数。 分析:最直接的方式涉及数学中的数列求和问题;可以直接应用公式进行计算;Sn= n/2 (a₁ + aₙ) (其中a₁=1, aₙ=n)
#include<stdio.h>
全部评论 (0)
还没有任何评论哟~
