蓝桥杯知识总结(持续更新)

这篇博客涵盖了多种编程技巧,包括非递归求斐波那契数列、长整型处理、字符串数字运算、进制转换、前缀和计算、数组操作、字符串处理、全局变量的使用、标记思想应用、字符ASCII码转换以及字符串到数字的转换。同时,提到了读取和处理大整数、字符串操作如`getline`函数、使用`map`进行键值对存储以及在编程中注意值变化和使用中间变量的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.不能用递归:超时

参考:入门训练 Fibonacci数列

2.long long类型

参考:入门训练 序列求和

数据规模与约定:1 <= n <= 1,000,000,000。

long long整型:-9×10的18次方~9×10的18次方
int整型:-2×10的9次方~2×10的9次方

3.字符串可加减数字计算【自动转化ASCII】

int main(){
    string str = "000";
    str[1]+=2;
    cout<<str;//020
}

4. p进制转十进制

例子:9进制转10进制【2022省赛填空】

#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<string>
#include<iomanip>
using namespace std;

int main(){
	
	int x = 2022;
	
	int y = 0, pro = 1;
	int p = 9;
	while(x!=0){
		y = y + (x % 10) * pro;
		x /= 10;
		pro = pro * p; 
	} 
	
	cout<<y;
	
	return 0;
} 

5. 前缀和

参考:https://blog.csdn.net/weixin_30647065/article/details/95440092
题目:求和

#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
#include <cstdbool>
#include <string.h>
#include <math.h>

using namespace std;



int main()
{
    int a[100005] = {0};
    int b[100005] = {0};
    int n;
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        cin >> a[i];
        b[i] = b[i-1] + a[i];
    }
    int t;
    cin >> t;
    while (t--)
    {
        int l,r;
        int sum = 0;
        cin >> l >> r;
        sum = b[r] - b[l-1];
        printf("%d\n",sum);
    }
    return 0;
}

6. reverse()反转

reverse(vi.begin(),vi.end());
reverse(vi,vi+3);

7. vector

vector<int> vi;
vi.push_back(x);

8. 全局变量注意

注意:
采用全局变量时,尽量将所有变量都使用全局变量,一开始一些使用全局,num不使用,就没有通过。
如果都不使用全局变量也是通过的。
要保证变量形式保持一致。
为了代码格式标准,尽量全部使用全局变量,如果不确定,就都不使用。

知识点:
思想掌握,未访问置为0,已经访问置为1。

参考:【入门4 数组】P1047 [NOIP2005 普及组] 校门外的树

9. 注意值变化,使用中间变量

参考:【入门4 数组】P1554 梦中的统计——数组下标计数

for(int i = m; i <= n; i++){
		int j = i; //注意要有中间变量,因为i是要变的 
		while(j!=0){
			int temp = j % 10;
			a[temp]++;
			j /= 10;
		} 
	}

10. 标记0\1思想

参考:【入门4 数组】P5729 【深基5.例7】工艺品制作

11. toupper/tolower()

将字符串大小写转换!不改变数字

12. 字符与ASCII码转换

字符加位

	char c;
	cin>>c;
	printf("%c",c+1);
//a--b

数字转字符

	int c;
	cin>>c;
	printf("%c",c+1);

13. 26字母加位循环

参考:P1914 小书童——凯撒密码

s[i] + n - 26

14. getline

一行都可以读入,包括空格。
参考:P5015 [NOIP2018 普及组] 标题统计

15. map键值对

参考:【入门5 字符串】P1125 [NOIP2008 提高组] 笨小猴——map
map使用:
1、map按照键值对存储,并且按照进行升序

16. 标记思想、字符串–数字转换

标记思想!
字符串–数字:stoi()
数字–字符串:to_string()
参考:【入门5 字符串】P1957 口算练习题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值