第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和

举报
红目香薰 发表于 2023/02/15 01:39:00 2023/02/15
【摘要】 第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和 前言 基础练习 序列求和  C语言 C++语言 Java语言 Python语言 总结

 编辑

第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和


目录

第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和

前言

基础练习 序列求和 

C语言

C++语言

Java语言

Python语言

总结



 

前言

        最近的一些文章都可能会很碎,写到哪里是哪里,过一阵子会具体的整理一遍,这里其它的类型题先往后排一排,因为蓝桥最后考的也就是对题目逻辑的理解能力,也就是dp分析能力了,所以就主要目标定在这里,最近的题目会很散,很多,基本上都是网罗全网的一些dp练习题进行二次训练,准备比赛的学生底子薄的先不建议看啊,当然,脑子快的例外,可以直接跳过之前的一切直接来看即可,只需要你在高中的时候数学成绩还可以那就没啥问题,其实,dp就是规律总结,我们只需要推导出对应题目的数学规律就可以直接操作,可能是一维数组,也可能是二维数组,总体来看二维数组的较多,但是如果能降为的话建议降为,因为如果降为起来你看看时间复杂度就知道咋回事了,那么在这里祝大家能无序的各种看明白,争取能帮助到大家。


目录

第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和

前言

基础练习 序列求和 

C语言

C++语言

Java语言

Python语言

总结




基础练习 序列求和 

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

求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类型的整数。

题解:又是一个大数的运算,所以我们要看好使用的变量类型来处理这类问题,除了Python语言啊,因为Python根本不在乎这些东西。

C语言

直接说明64位long值就解决了。

#include <stdio.h>
int main()
{
    int n;
    long long ret = 0, tmp;
    scanf("%d", &n);
    tmp = n;
    printf("%I64d", (1+tmp) * tmp / 2);
    return 0;
}

C++语言

这里就不用写明64d了,因为直接有long类型进行数据处理了。

#include <iostream>
using namespace std;
int main()
{
     long long n;
    cin >> n;
    cout << (1+n) * n / 2;
    return 0;
}

Java语言

由于在long值内,故而Java也可以不用进行更大数据变量的更换。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.next();
		sc.close();
		long i = Integer.parseInt(n);
        long sum = (1+i)*i/2;
        System.out.println(sum);
	}
}

Python语言

Python说了,就这个题,直接上公式,就一个数列公式有啥不会的,问我变量是否能放得下,告诉他我根本不在乎。

n=int(input())
a=(1+n)*n/2
print(int(a))

总结

这个题目考核的大数运算,但是又范围给的是long的范围内,故而直接使用long的变量进行操作即可,方便快捷,不需要想的太复杂。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。