• lqb 入门训练 序列求和 (PS:用长整数做数据的输入输出)


    入门训练 序列求和  

    时间限制:1.0s   内存限制:256.0MB
       
    问题描述
    求1+2+3+...+n的值。
    输入格式
    输入包括一个整数n。
    输出格式
    输出一行,包括一个整数,表示1+2+3+...+n的值。
    样例输入
    4
    样例输出
    10
    样例输入
    100

    说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。

    一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低。

    样例输出
    5050
    数据规模与约定
    1 <= n <= 1,000,000,000。

    说明:请注意这里的数据规模。

    本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。

    本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。

    如果你使用C++或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出long long类型的整数。

    分析:

      普通的遍历会超时,我们可以用高中学的等差数列求和公式进行求解

      Sn = (A1 + An) × n / 2

      Sn = NA1 + N(N-1)d / d

    PS:蓝桥杯评测系统的长整数输入输出可以使用 %lld  %I64d

     

    C/C++代码实现(AC)

      

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 
    10 using namespace std;
    11 
    12 int main()
    13 {
    14     long long n;
    15     scanf("%lld", &n);
    16     printf("%lld
    ", (1 + n) * n / 2);
    17     return 0;
    18 }
  • 相关阅读:
    没有功能需求文档就拒绝开发吗?
    用Spring cloud Stream来开发基于MQ消息驱动的微服务
    在Linux上讲Java命令行的作为服务运行
    EF提供的三种查询方式
    C#中sealed关键字
    winform Chart控件 获取鼠标处坐标值方法
    Linq to Entity中连接两个数据库时要注意的问题
    linq中查询列表的使用及iqueryable和list集合之间的转换
    C语言关键字register、extern、static
    DllImport的具体用法
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9033462.html
Copyright © 2020-2023  润新知