蓝桥杯专题-试题版-【操作格子】【查找整数】【分解质因数】【高精度加法】

news2024/9/26 1:28:16
  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

😜操作格子

问题描述
有n个格子,从左到右放成一排,编号为1-n。
共有m次操作,有3种操作类型:
1.修改一个格子的权值,
2.求连续一段格子权值和,
3.求连续一段格子的最大值。
对于每个23操作输出你所求出的结果。

输入格式
第一行2个整数n,m。
接下来一行n个整数表示n个格子的初始权值。
接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的权值为y,p=2时表示求区间[x,y]内格子权值和,p=3时表示求区间[x,y]内格子最大的权值。

输出格式
有若干行,行数等于p=23的操作总数。
每行1个整数,对应了每个p=23操作的结果。

样例输入
4 3
1 2 3 4
2 1 3
1 4 3
3 1 4

样例输出
6
3

数据规模与约定
对于20%的数据n <= 100,m <= 200。
对于50%的数据n <= 5000,m <= 5000。
对于100%的数据1 <= n <= 100000,m <= 1000000 <= 格子权值 <= 10000
#include <stdio.h>
#define N 100000
#define A 1000
#define B 100

int sum(int* a, int m, int n)
{
    int i, s = 0;
    for (i = m; i <= n; i++)
        s += a[i];
    return s;
}

int max(int* a, int m, int n)
{
    int i, s = a[m];
    for (i = m + 1; i <= n; i++)
        if (s < a[i])
            s = a[i];
    return s;
}

int main()
{
    int i, j, k, m, n;
    int a[100000], b[100000][3], c[A][2] = {0};
    scanf("%d%d", &n, &m);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < m; i++)
        for (j = 0; j < 3; j++)
            scanf("%d", &b[i][j]);

    for (i = 0; i < (n + B - 1) / B; i++)
    {
        c[i][0] = c[i][1] = a[i * B];
        for (j = i * B + 1; j < i * B + B && j < n; j++)
        {
            c[i][0] += a[j];
            if (c[i][1] < a[j])
                c[i][1] = a[j];
        }
    }
    for (i = 0; i < m; i++)
    {
        if (b[i][0] == 1)
        {
            c[(b[i][1] - 1) / B][0] += b[i][2] - a[b[i][1] - 1];
            k = (b[i][1] - 1) / B;
            if (c[k][1] <= b[i][2])
            {
                c[k][1] = b[i][2];
            }
            else if (a[b[i][1] - 1] == c[k][1])
            {
                a[b[i][1] - 1] = b[i][2];
                c[k][1] = max(a, k * B, k * B + B > n ? n - 1 : k * B + B - 1);
            }
            a[b[i][1] - 1] = b[i][2];
        }
        else if (b[i][0] == 2)
        {
            int s = 0;
            b[i][1]--, b[i][2]--;
            int o = b[i][2] / B - b[i][1] / B;
            if (o < 2)
            {
                s = sum(a, b[i][1], b[i][2]);
            }
            else
            {
                s = sum(a, b[i][1], (b[i][1] + B) / B * B - 1);
                s += sum(a, b[i][2] / B * B, b[i][2]);
                for (j = b[i][1] / B + 1; j < b[i][2] / B; j++)
                    s += c[j][0];
            }
            printf("%d\n", s);
        }
        else if (b[i][0] == 3)
        {
            int s = 0, t;
            b[i][1]--, b[i][2]--;
            int o = b[i][2] / B - b[i][1] / B;
            if (o < 2)
            {
                s = max(a, b[i][1], b[i][2]);
            }
            else
            {
                s = max(a, b[i][1], (b[i][1] + B) / B * B - 1);
                t = max(a, b[i][2] / B * B, b[i][2]);
                if (s < t) s = t;
                for (j = b[i][1] / B + 1; j < b[i][2] / B; j++)
                    if (s < c[j][1])
                        s = c[j][1];
            }
            printf("%d\n", s);
        }
    }
    return 0;
}

😜查找整数

问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。

输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入
6
1 9 4 8 3 9
9

样例输出
2

数据规模与约定
1 <= n <= 1000
#include <stdio.h>

int main()
{
    int i, m, n, a[1000];
    scanf("%d", &n);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    scanf("%d", &m);
    for (i = 0; i < n; i++)
        if (a[i] == m) break;
    if (i == n)
        printf("-1");
    else
        printf("%d", i + 1);
    return 0;
}

😜分解质因数

问题描述
  求出区间[a,b]中所有整数的质因数分解。

输入格式
  输入两个整数a,b。
输出格式
  每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)

样例输入
3 10
样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5

提示
  先筛出所有素数,然后再分解。
数据规模和约定
  2<=a<=b<=10000
#include <stdio.h>
#include <math.h>

int factor(n)
{
    int i, j = (int)sqrt(n);
    if (n % 2 == 0) return 2;
    for (i = 3; i <= j; i++)
        if (n % i == 0) return i;
    return n;
}

int main()
{
    int i, j, k, m, n;
    scanf("%d%d", &m, &n);
    for (i = m; i <= n; i++)
    {
        j = factor(i);
        k = i / j;
        printf("%d=%d", i, j);
        while (k > 1)
        {
            j = factor(k);
            k /= j;
            printf("*%d", j);
        }
        printf("\n");
    }
    return 0;
}

😜高精度加法

问题描述
  输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

算法描述
  由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
  定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。
  计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
  最后将C输出即可。

输入格式
  输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
输出格式
  输出一行,表示a + b的值。

样例输入
20100122201001221234567890
2010012220100122
样例输出
20100122203011233454668012
#include <stdio.h>

int main()
{
    int i;
    char a[101], b[101], c[102] = {0};
    scanf("%s%s", a, b);
    int alen = strlen(a);
    int blen = strlen(b);
    
    for (i = 0; i < alen || i < blen; i++)
    {
        if (i < alen)
            c[i] += a[alen-i-1] - '0';
        if (i < blen)
            c[i] += b[blen-i-1] - '0';
        if (c[i] >= 10)
        {
            c[i+1] = c[i] / 10;
            c[i] %= 10;
        }
    }
    if (alen < blen) alen = blen;
    if (c[alen] > 0) printf("%d", c[alen]);
    for (i = alen - 1; i >= 0; i--)
        printf("%d", c[i]);
    return 0;
}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring FrameWork从入门到NB -三级缓存解决循环依赖内幕 (二)

开始用上一篇文章讲到的Spring依赖注入的步骤&#xff0c;用两个例子来推导一下整个过程&#xff0c;举例子有助于了解真相。 先用一个最简单的例子&#xff1a;没有依赖的单例bean的创建。 推导过程是需要上一篇文章的步骤的&#xff0c;要参照步骤一步一步来。 无依赖的单…

Linux内核代码60%都是驱动?驱动代码不会造成内核臃肿吗?

为什么内核中驱动占比最高 一、前言二、Linux中避免内核臃肿的措施2.1 交叉编译及SDK包的裁剪2.2 设备树2.3 模块化2.4 硬件抽象层 三、嵌入式Linux的裁剪四、总结 一、前言 今天逛知乎看到这么一个问题&#xff1a;为什么Linux内核代码60%都是驱动? 如果每支持新的设备就加入…

【设计模式】Java设计模式——模板方法模式(Template Pattern)

文章目录 1. 介绍1.1 定义1.2 作用 2. 模式结构2.1 UML类图2.2 模式组成 3. 代码实例3.1 背景3.2 应用 4. 优点5. 缺点6. 应用场景 1. 介绍 1.1 定义 模板方法模式(Template Pattern)&#xff0c;又叫模板模式&#xff0c;它属于行为型模式模板方法模式定义一个模板结构&…

Apikit 自学日记:版本管理

功能入口&#xff1a;API管理应用 / 选中某个项目 / 项目管理菜单 / 项目版本管理 项目版本管理功能模块提供对项目级别的版本管理&#xff0c;可新增、删除、对比项目级版本。在创建项目版本号的时候会对整个项目的部分模块数据进行快照保存。可用于每次迭代发布打全局版本号…

ESP32设备驱动-TMF8801激光测距传感器驱动

TMF8801激光测距传感器驱动 文章目录 TMF8801激光测距传感器驱动1、TMF8801介绍2、硬件准备3、软件准备4、驱动实现1、TMF8801介绍 TMF8801 是一款真正的直接飞行时间 (ToF) 传感器系统,采用单一模块化封装,通过亚纳秒光脉冲和抗锯齿“秒表”方法测量往返时间,提供高精度深度…

流量分析工具wireshark-学习笔记

&#xff08;一&#xff09;wireshark工具 1、wireshark工具简介 Wireshark是一种开源网络分析工具&#xff0c;它可以让你在计算机网络上捕获和查看数据包&#xff0c;并能帮助你深入了解网络的运行和协议的实现。它可以捕获不同类型的流量&#xff0c;包括以太网、Wi-Fi、TC…

【面试题】面试官问:如果有100个请求,你如何使用Promise控制并发?

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 开篇 在现代Web开发中&#xff0c;异步请求已经成为了必不可少的一部分。然而&#xff0c;…

ISP之图像降分辨率

1、图像缩放背景 图像的放大、缩小(简称缩放)是图像处理的一种处理方法。所谓图像缩放是指图像分辨率的改变&#xff0c;它在图像显示、传输、图像分析以及动画制作、电影合成、甚至医学图像处理中都有着相当广泛的应用。比如要在1024 X 768 分辨率的显示器上全屏显示800 X 60…

8.2 电压比较器(2)

五、集成电压比较器 1、集成电压比较器的主要特点和分类 电压比较器可将模拟信号转换成二值信号&#xff0c;即只有高电平和低电平两种状态的离散信号。因此&#xff0c;可用电压比较器作为模拟电路和数字电路的接口电路。集成电压比较器虽然比集成运放的开环增益低&#xff…

强化学习从基础到进阶-案例与实践[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧&#xff08;调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍&#xff1a;【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧…

Arcmap读取nc文件并导出为tif格式

Arcmap读取nc文件并导出为tif格式 前言操作步骤 前言 在使用某一降水数据的时候&#xff0c;发现直接把nc格式的数据拖进Arcmap&#xff0c;查看属性表的时候是空的&#xff0c;点击图上的信息也只会显示一个值&#xff0c;但这个nc数据应该是有很多个值的&#xff08;我的数据…

Kubernetes - adm搭建 · 保姆级教程

master&#xff08;2C/4G&#xff0c;cpu核心数要求大于2&#xff09; 192.168.179.25 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08;2C/2G&#xff09; 192.168.179.26 docker、kubeadm、kubelet、kubectl…

【JavaScript】JavaScript中的nodeName、nodeType、nodeValue区别

文章目录 JavaScript中的nodeName、nodeType、nodeValue区别(一)nodeName(二)nodeValue(三)nodeType JS代码demo JavaScript中的nodeName、nodeType、nodeValue区别 (一)nodeName https://www.w3schools.cn/jsref/prop_node_nodename.html 元素节点的 nodeName是标签名称 属性…

ffmpeg windows编译及调试完整版

目录 编译 基础环境准备 依赖环境安装 依赖库安装 X264 fdk-aac X265 ffmpeg-4.3.6 调试 基础项目环境搭建 VS2019项目创建 VS2019项目代码 vs2019配置 VS2019调试 编译 基础环境准备 1、安装vs2019环境 2、安装msys2工具 3、开始菜单启动x86 Native Tools Comm…

从0到1精通自动化测试,pytest自动化测试框架,fixture之autouse=True(十二)

一、前言 平常写自动化用例会写一些前置的fixture操作&#xff0c;用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候&#xff0c;每次都传这个参数&#xff0c;会比较麻烦 fixture里面有个参数autouse&#xff0c;默认是Fasle没开启的&#xff0c;可以设置为Tr…

diffusion model(一)DDPM技术小结 (denoising diffusion probabilistic)

DDPM技术小结 (denoising diffusion probabilistic) 1 从直觉上理解DDPM 在详细推到公式之前&#xff0c;我们先从直觉上理解一下什么是扩散 对于常规的生成模型&#xff0c;如GAN&#xff0c;VAE&#xff0c;它直接从噪声数据生成图像&#xff0c;我们不妨记噪声数据为 z z…

RTX 4060跑分出炉,加量还降价真良心了?

RTX 40 系真正意义上主流平民级显卡 4060 桌面版已确认于本月 29 日推出。 相较于原定的 7 月中旬上市提前了半个月左右&#xff0c;国内售价 2399 元&#xff08;比 RTX 3060 首发低 100 元&#xff09;。 从这样的「早产」操作能看出&#xff0c;RTX 40 系显卡拉胯销量表现确…

java并发编程 2:java线程基础知识

目录 创建和运行线程查看进程线程线程运行原理常见方法了解start与runsleep与yield线程优先级joininterrupt不推荐使用的方法 主线程与守护线程线程状态操作系统中的线程状态java中的线程状态 创建和运行线程 方法一: 直接使用 Thread public class CreateThread01 {public s…

使用U盘安装Centos7全流程分享

文章目录 1、下载 centos7 的镜像2、下载老白菜3、插入U盘4、将U盘插入要刷机的电脑中5、获取U盘的启动地址6、正式配置重启7、进入安装界面了&#xff0c;现在就容易7.1 选择中文7.2 点击安装位置&#xff0c;分配磁盘7.3 配置网络和主机7.4 选择开始安装&#xff0c;并配置账…

【第1集】odoo16开发环境搭建

因为博主使用Mac作为开发电脑&#xff0c;因此都以Mac为主。同时本文odoo使用的是16版本&#xff0c;采用python源码进行安装&#xff0c;如需要二进制安装同学&#xff0c;后续有条件可能会出这方面的搭建指导。本文包含四个部分&#xff0c;分别为数据库安装&#xff0c;系统…