算法题:SOJ1092: 欧几里得算法

news2025/2/4 4:44:59

在这里插入图片描述

一、BackGroud

在RSA密码体系中,欧几里得算法是加密或解密运算的重要组成部分。它的基本运算过程就是解 x*a=1(mod n) 这种方程。

二、The Problem

整个解的过程是这样的,我们用一个例子来说明。
当a=1001 ,n=3837时
方程为 x * 1001 = 1 (mod 3837)

求解过程:

3837 = 3 * 1001 + 834
1001 = 1 * 834 + 167
834 = 4 * 167 + 166
167 = 166 + 1

所以

1 = 167 - 166
= 167 - (834 - 4 * 167)
= 5 * 167 - 834
= 5 *(1001 - 834) - 834
= 5 * 1001 - 6 *834
= 5 * 1001 - 6 * (3837 -3 *1001)
= 23 * 1001 - 6 *3837

然后对等式两端同时除以模3837得

23 * 1001 = 1 (mod 3837)
于是 x = 23
现在给出a和n,你能不能在最短的时间内解出这个方程呢?

三、输入

输入包括多组测试数据。每组测试数据对应输入的一行,每行包括两个整数a和n。1<a,n<2^31(用long可以存下)
当a=n=0时输入结束,这组数据不包括在需要计算的数据中。

四、输出

对应每组输入数据,输出最小的满足题意的解x。
注意:本题用搜索是不可能做出来的,所以…

五、样例输入

1001 3837
136468984 134548555
0 0

六、样例输出

23
112206854

七、源代码

#include<stdio.h>
int d,x,y;
void extend_euclid(int a,int b)
{
     if(b==0)
     {
        d=a;x=1;y=0;
     }
     else
     {
         extend_euclid(b,a%b);
         int temp=x;
             x=y;
             y=temp-a/b*y;
     }
}        
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)==2&&(n||m))
    {
       if(n>m)
       n%=m;
       extend_euclid(m,n);
       if(y<0)
       printf("%d\n",y+m);
       else
       printf("%d\n",y); 
    }
    return 0;
}

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

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

相关文章

12 个免费 GIS 数据源介绍:最佳全球栅格和矢量数据集

我们生活在当今的信息时代&#xff0c;每天都被大量的信息包围&#xff0c;就免费的 GIS 数据源而言&#xff0c;它的信息似乎是永无止境的。机器学习、人工智能、区块链、预测分析&#xff0c;所有令人惊叹的技术都将革新商业和社会的发展。但如果没有数据的话&#xff0c;这些…

为了摸鱼,我开发了一个工具网站

&#x1f3e1; 博客首页&#xff1a;派 大 星 ⛳️ 欢迎关注 &#x1f433; 点赞 &#x1f392; 收藏 ✏️ 留言 &#x1f3a2; 本文由派大星原创编撰 &#x1f6a7; 系列专栏&#xff1a;《开源专栏》 &#x1f388; 本系列主要输出作者自创的开源项目 &#x1f517; 作品&…

“农场”技术栈是什么?浅聊FARM Stack

介绍 FARM 堆栈 - FastAPI、React 和 MongoDB。 长按关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 扫码关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 当我获得第一份编程工作时&#xff0c;LAMP&#xff08;Linux、A…

[附源码]java毕业设计万科电子商城

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【毕业设计】22-基于单片机的智能温度计的系统设计(原理图工程+仿真工程+源代码+仿真视频+答辩论文+答辩PPT)

【毕业设计】22-基于单片机的智能温度计的系统设计&#xff08;原理图工程仿真工程源代码仿真视频答辩论文答辩PPT&#xff09;[toc] 资料下载链接 资料下载链接 资料链接&#xff1a;https://www.cirmall.com/circuit/28616/ 包含此题目毕业设计全套资料&#xff1a; 基于单…

029-Swing实现简单计算器功能

https://blog.csdn.net/software7503/article/details/127952712https://blog.csdn.net/software7503/article/details/127952712上一讲:028-GUI事件处理,ActionListener事件,MouseListener事件 下一讲:030-用Swing组件及Action事件实现登录功能_CS

UNCTF2022 writeup

题量太多了&#xff0c;比赛结束之后又要做一遍… 注&#xff1a;最后给出的均为题目解出的flag&#xff0c;提交时需将格式修改为UNCTF{} 文章目录Web我太喜欢bilibili大学啦ezgame签到babyphpeasy_upload给你一刀我太喜欢bilibili大学啦修复版302与深大随便注PwnwelcomeUNCT…

企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建

一、ELK概述 1、ELK日志分析系统 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch&#xff1a; ElasticSearch&#xff1a;是…

Linux:进程(一)

文章目录前言一、进程是什么二、描述进程--PCB三、查看进程四、通过系统调用获取进程标示符五、通过系统调用创建进程-fork初识六、进程状态七、进程状态查看八、僵尸进程&#xff08;Z&#xff1a;zombie&#xff09;1.是什么2.为什么3.怎么避免九、孤儿进程十、进程优先级十一…

内蒙古简易医院企业网设计与规划

目 录 摘 要 1 Abstract 2 第1章 绪论 5 1.1 背景及意义 5 1.2 国内外研究现状 6 1.2.1 国外研究现状 7 1.2.2 国内研究现状 7 1.3研究内容 8 第2章 医院企业网需求分析 9 2.1医院基本情况 9 2.1.1基本情况 9 2.1.2建筑楼群及信息点分布图 9 2.2需求需求 10 2.2.1管理需求 10 2…

Matlab下载安装详细教程

下载链接&#xff1a;https://pan.baidu.com/s/19JbPP2hWlZraVbLuNlHpcg 提取码&#xff1a;6666 下载网盘链接是公众号“电脑DIY圈”里的分享&#xff0c;不是博主自己的&#xff0c;另外此安装教程同样来自电脑DIY圈公众号&#xff0c;博主仅做整理&#xff0c;以便日后需要 …

图 知识点总结(王道)

图的定义 图G由顶点集V和边集E组成&#xff0c;记为G&#xff08;V,E&#xff09;&#xff0c;其中V&#xff08;G&#xff09;表示图G中顶点的有限非空集&#xff1b;E(G)表示图G中顶点之间的关系&#xff08;边&#xff09;集合。若V{v1&#xff0c;v2vn}&#xff0c;则用|V…

asp开发的人脸识别:人脸照片+身份证号+姓名,核验实人认证

今天接到一个客户需求&#xff0c;要求用asp开发人脸识别功能&#xff0c;主要用于网站上用户的实人核验&#xff0c;用户上传照片后&#xff0c;通过照片姓名身份证号码&#xff0c;核验是不是一个人&#xff0c;判断用户的真实性。asp写这个其实很简单&#xff0c;经过一个小…

黑*头条_第7章_kafka实战应用文章自动审核

黑*头条_第7章_kafka实战应用&文章自动审核 文章目录黑*头条_第7章_kafka实战应用&文章自动审核kafka实战应用&文章自动审核今日目标1 kafka封装1.1 功能需求1.2 定义1.2.1 约束定义1.3 实现设计1.4 开发实现1.4.1 配置文件1.4.2 KafkaMessage1.4.3 KafkaListener1…

SpringMVC ---- HttpMessageConverter

SpringMVC ---- HttpMessageConverter1. RequestBody2. RequestEntity3. ResponseBody4. SpringMVC处理json5. SpringMVC处理ajax6. RestController注解7. ResponseEntityHttpMessageConverter&#xff0c;报文信息转换器&#xff0c;将请求报文转换为 Java 对象&#xff0c;或…

[牛客top101]详解01,02,反转链表问题

文章目录前言1. 整体翻转链表1.1 题目描述1.2 题目详解2. 翻转链表的部分区间2.1 题目描述2.2 题目详解3. 完整代码展示前言 从本章开始,我们就开始刷题旅程啦,路上必定问题多多,但还是得练呐!所以,就现在,开始啦! 1. 整体翻转链表 1.1 题目描述 给定一个单链表的头结点pHea…

(续)SSM整合之springmvc笔记(拦截器)(P164-168)

目录 一 准备工作 1. 创建spring_mvc_extension com.atguigu 2 .导入依赖 3. 添加web模块 4 .web.xml 5 . springmvc.xml 6 index.html 7 控制层 8 success.html 9 .添加到tomcat ​10 测试 二 . 测试拦截器 1 . index.html 2 . FirstInterceptor …

Docker概念及安装

一、Docker概述 1 IT架构的演进&#xff1a; 裸金属 → 虚拟机 → 容器→ 函数化、代码化 云计算涌现出很多改变传统IT架构和运维方式的新技术&#xff0c;比如虚拟机、容器、微服务、Serverless&#xff08;无服务&#xff09;&#xff0c;无论这些技术应用在哪些场景&…

智慧能源解决方案-最新全套文件

智慧能源解决方案-最新全套文件一、建设背景存在的问题二、建设架构三、建设方案四、获取 - 智慧能源全套最新解决方案合集一、建设背景 我国工业能耗占全国总能耗比例近70%&#xff0c;许多经济大省工业能耗占比甚至显著高于70%&#xff0c;工业企业能耗增速也明显领先全国其…

Bash脚本debug攻略

初学Bash时, 我从未想过去debug Bash脚本, 也从未想过Bash脚本也能debug. 随着技术的增长, 写的脚本越来越复杂, 使用echo打印日志来调试脚本的方式也越来越捉襟见肘了. 直到某天 通读了一遍Bash Reference Manual, 才发现Bash脚本也是可以debug的. 下面就介绍三种debug Bash脚…