算法导论机考复习(数据处理)

news2024/11/16 23:48:19

素数筛选

求所有小于n的素数

#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int prim[N];
int n;
int main()
{
    while(cin>>n)
    {
        //初始化2到n都是素数
        for(int i=2;i<=n;i++)
        {
            prim[i]=1;
        }
        //从2到n把所有的是当前数的倍数的数都设置为0
        //不能设置自己为0
        for(int i=2;i<=n;i++)
        {
            for(int j=2;j<=n;j++)
            {
                if(j%i==0&&i!=j)
                {
                    prim[j]=0;
                }
            }
        }
        for(int i=2;i<=n;i++)
        {
            if(prim[i])
            {
                cout<<i<<" ";
            }
        }
    }
}

扩展欧几里得算法

gcd=gcd(a,b);

那么存在gcd=ax+by;扩展欧几里得算法要求求出gcd,并且可以求出所有xy的解;

根据欧几里得算法我们知道gcd(a,b)=gcd(b,a%b)

那么就有b*x1+(a%b)*x2=gcd

又a%b=a-(a/b)*b;

将a%b进行替换,得到

gcd=a*y1+b*(x1-a/b*y1)

进而可以写出递归方程:

现在考虑递归终止

因为欧几里得算法就是在b=0的时候返回a,扩展欧几里得算法的最终状态就是

a*1+b*0=gcd;//不断递归达到的状态,然后反向递归求出xy,x就是a关于m的逆元

#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int egcd(int a,int b,int &x,int &y)//xy都是可修改的
{
    if(b==0)
   {
       x=1;
       y=0;
       return a;
   }
        
    else
    {
        int ans=egcd(b,a%b,x,y);
        //注意这里更新xy的操作的位置,
        //因为ab的值是由上一层得到的,所以在参数里面就改了
        //而xy的值是在下一层得到的,所以在递归调用之后更新。
        int t=x;
        x=y;
        y=t-a/b*y;
        returna ans;
    }
    //根据扩展欧几里得:这一层的xy可以由下一层的得到
    
}

扩展欧几里得算法来求乘法逆元:

给出一个式子 ax ≡ 1 (mod m) 这个式子等价于 ax+my=1;

扩展欧几里得中有:

上面那个式子的解是:x=x0+(m/1)*t     y=y0+(a/1)*t

这样可以得知所有符合条件的x的解都是关于m同余的;

此时x是a关于m的乘法逆元,那么我们可以得到一定存在一个最小的解,而且这个解是小于m的;

总的来说扩展偶欧几里得算法就是求一个方程的解。

通过不断递归求出a*1+b*0=1这个状态,然后反向递归求出x,即为a关于m的乘法逆元

 

#include<bits/stdc++.h>
using namespace std;
const int N=1000;
int a,b,x,y;
int egcd(int a,int b,int &x,int &y)
{
    if(b==0)
        {
            x=1;
            y=0;
            return a;
        }
    else
    {
        int ans=egcd(b,a%b,x,y);
        //注意这里更新xy的操作的位置,
        //因为ab的值是由上一层得到的,所以在参数里面就改了
        //而xy的值是在下一层得到的,所以在递归调用之后更新。
        int t=x;
        x=y;
        y=t-a/b*y;
        return  ans;
    }
    //根据扩展欧几里得:这一层的xy可以由下一层的得到

}

int main()
{
    cin>>a>>b;
    cout<<(egcd(a,b,x,y)==1?(x%b+b)%b:-1)<<endl;
    //x可能超过b了,所以取模,取模之后可能会是负数,所以加上b,然后再取模,保证范围
    return 0;

}

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

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

相关文章

硬盘或者U盘提示需要格式化的解决办法

插入硬盘之后提示&#xff1a; 使用驱动器 G:中的光盘之前需要将其格式化 是否要将其格式化? 如下图所示 顿时慌了啊&#xff0c;里面还有比较重要的东西呢&#xff0c;这一下子完蛋&#xff1f; 遇事找某宝&#xff0c;上面估计有这种技术服务。果然有这一类的技术服务&…

数据库作业——select查询操作

数据库作业 创建数据库 mysql> create table worker( -> 部门号 int(11) not null, -> 职工号 int(11) primary key not null,-> 工作时间 date not null,-> 工资…

Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(十一)

今天开始使用 vue3 + ts 搭建一个项目管理的后台,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏…

RabbitMQ ---- 消息队列

RabbitMQ ---- 消息队列 1. MQ 的相关概念1.1 什么是 MQ1.2 为什么要用 MQ1.3 MQ 的分类1.4 MQ 的选择 2. RabbitMQ2.1 RabbitMQ 的概念2.2 四大核心概念2.3 RabbitMQ 核心部分2.4 各个名词介绍2.5 安装 1. MQ 的相关概念 1.1 什么是 MQ MQ(message queue)&#xff0c;从字面…

03-2_Qt 5.9 C++开发指南_Qt全局定义、容器类、容器类的迭代器、Qt类库的模块

本篇简要介绍Qt全局定义中的数据类型、函数、宏定义&#xff1b;容器类中&#xff1a;顺序容器类、关联容器类&#xff1b;容器类的迭代器&#xff1b;Qt类库的模块。 文章目录 1.Qt全局定义1.1 数据类型定义1.2 函数1.3 宏定义1.3.1 QT_VERSION1.3.2 QT_VERSION_CHECK1.3.3 Q…

绘制等厚度图

clc;clear;close all; data xlsread(BRENT层等厚度.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); N 45; …

为什么没有getter方法无法成功返回new对象的json格式(chatgpt谬论)

标题防止太长所以精炼了些。springboot项目&#xff0c;restful风格下面&#xff0c;我们如果返回的是一个new的实体类对象是什么情况。 restful风格其实是要将返回的数据封装为json的&#xff0c;它是要去这样封装的。但是如果你不提供对象的get方法其实是没法返回的。接口测试…

数据库的备份与恢复(超详细讲解)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于MySQL数据库的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.数据库的备份与恢复是什么 二. …

5. Redis优化秒杀、Redis消息队列实现异步秒杀

文章目录 Redis优化秒杀、Redis消息队列实现异步秒杀一、秒杀优化1.1 回顾“一人一单”秒杀业务代码1.2 异步秒杀思路1.3 基于Redis完成秒杀资格判断1.3.1 修改VoucherServiceImpl1.3.2 Lua脚本编写1.3.3 Redislua判断用户是否抢购成功1.3.4 基于阻塞队列实现异步秒杀下单1.3.4…

Java024——String类

一、String类简单说明 1、单个字符可以用char类型保存&#xff0c;多个字符组成的文本就需要保存在String 对象中。 2、String是Java中的一个类 3、String 通常被称为字符串&#xff0c;一个String对象最多可以保存(2^32-1)个字节(占用4GB空间大小)的文本内容。 二、String类…

Jmeter 压测工具的安装及使用

目录 一、简介二、下载三、安装四、启动五、使用1.调整界面显示大小2.改为中文&#xff08;选&#xff09;3.添加线程组4.添加 HTTP 请求5.添加 HTTP 请求头6.保存压测配置7.启动压测8.查看结果树9.查看聚合报告 一、简介 官网地址&#xff1a; https://jmeter.apache.org/ JM…

HTML案例:滚动条下拉后导航栏有网格状效果

案例&#xff1a;在滚动条下拉的时候&#xff0c;导航栏是固定的&#xff0c;当下拉卷出的内容在导航条的范围内时&#xff0c;导航条的背景虚化为卷出的内容 固定定位的效果 需求效果&#xff1a; 1、HTML代码 <style>* {margin: 0;padding: 0;}nav {/* 固定定位 */pos…

穷且益坚,不坠青云之志——忆我的大学四年

文章目录 一、前言二、大学之前1.从小的经历以及家庭的困境2.一切的根源——自卑3.不愉快的初高中经历 三、大一&#xff1a;所谓追梦——改变的起点1.敏感而自卑的内心2.百团大战&#xff0c;与协会埋下不解之缘3.改变的契机——追梦App4.持续的学习&#xff0c;热爱铸就改变5…

vscode安装+配置+使用+调试【保姆级教程】

1. VScode是什么 Visual Studio Code简称VS Code&#xff0c;是一款跨平台的、免费且开源的现代轻量级代码编辑器&#xff0c;支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性&#xff0c;也拥有对git的开箱即…

Django_发送邮件

目录 一、开启SMTP服务并获取授权码 二、在Django的配置文件中添加邮箱服务配置 三、发送邮箱代码 源码等资料获取方法 使用django邮箱功能需要搭建smtp服务器&#xff0c;如果没有&#xff0c;可以使用第三方smtp服务器。 本文以第三方QQ邮箱服务器演示如何使用python的s…

从钢铁行业数字化管控平台的智能进化,看超自动化能力边界

文/王吉伟 钢铁行业的数字化转型&#xff0c;历来都是值得探讨的热点话题。 2022年&#xff0c;我国粗钢产量10.13亿吨&#xff0c;占据了全球钢铁供给市场的半壁江山。 这组数据可谓非常抢眼&#xff0c;但仍旧难掩诸多企业的各种经营问题。 钢铁生产过程工序众多&#xf…

CentOS环境下的JDK8安装

CentOS 安装 JDK8 安装JDK8 下载 官网&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8-linux 将下载好的压缩包拷贝到根目录下 通过xshell如果出现 bash: rz: 未找到命令 &#xff0c;需要先运行下面的命令 yum -y install lrzsz解压 tar -zxvf …

ubuntu彻底卸载libreoffice和安装wps

一.卸载libreoffice 1. 打开ubuntu桌面&#xff0c;右键 打开终端 方法一 完全卸载 sudo apt-get remove libreoffice-common 根据提示输入管理员密码&#xff0c;然后根据提示 输入 Y 这样&#xff0c;等待卸载完成。 正常情况下上述命令执行完成后Libreffice的表格、绘图…

DevOps基础服务1——版本控制gitlab

文章目录 一、基本了解1.1 安装git客户端1.2 git命令1.2.1 本地仓库1.2.2 远程仓库 二、安装gitlab三、功能管理3.1 创建账号3.2 用户注册授权通知功能3.3 创建项目远程库3.4 ssh设置3.5 克隆远程库项目到本地3.6 上传本地项目代码到远程库3.7 授权用户查看项目权限 一、基本了…

华为OD机试真题 Java 实现【查找树中元素】【2023 B卷 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、Java算法源码六、效果展示1、输入2、输出 一、题目描述 已知树形结构的所有节点信息&#xff0c;现要求根据输入坐标&#xff08;x,y&#xff09;找到该节点保存的内容值&#xff1b; 其中&#xff1a; x表示节点…