第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和
目录
第十四届蓝桥杯集训——练习解题阶段(无序阶段)- 基础练习 序列求和
前言
基础练习 序列求和
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值就解决了。
代码语言:javascript复制#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类型进行数据处理了。
代码语言:javascript复制#include <iostream>
using namespace std;
int main()
{
long long n;
cin >> n;
cout << (1 n) * n / 2;
return 0;
}
Java语言
由于在long值内,故而Java也可以不用进行更大数据变量的更换。
代码语言:javascript复制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说了,就这个题,直接上公式,就一个数列公式有啥不会的,问我变量是否能放得下,告诉他我根本不在乎。
代码语言:javascript复制n=int(input())
a=(1 n)*n/2
print(int(a))
总结
这个题目考核的大数运算,但是又范围给的是long的范围内,故而直接使用long的变量进行操作即可,方便快捷,不需要想的太复杂。