第1关:RSA密码体制

RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用。RSA 是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。

本关任务:对输入的明文进行 RSA 加密。

编程要求
根据提示,补全右侧编辑器中 Begin-End 区间的代码,根据输入的 n 和 公开加密指数 b ,利用平方乘算法来加密给定的密文。具体要求如下:

从后台获取 n 和 公开加密指数 b 以及明文 x ,利用平方乘算法来加密给定的密文并打印输出。
测试说明
平台会对你编写的代码进行测试:

测试输入:

11413 3533 9726
预期输出:

5761
开始你的任务吧,祝你成功!

#include<bits/stdc++.h>
using namespace std;
using ll=long long ;
ll n,b,x;
/*********** Begin ***********//*********** End ***********/
//在下面Begin和End之间补全代码,输出相应的结果
int main()
{cin>>n>>b>>x;/*********** Begin ***********/ll ans=1;while(b){if(b%2){ans*=x;}b/=2;x*=x;ans%=n;x%=n;}cout<<ans<<endl;/*********** End ***********/return 0;
}

第2关:素性检测

素数又称质数,是在大于 1 的整数中,只能被 1 和其自身整除的数。素性测试是检验一个给定的整数是否为素数的测试。

本关任务:计算并输出模一个奇素数的二次剩余。

素性检测
一个判定问题是指只能回答是或者否的问题。一个随机算法是指任一使用了随机数的算法,下面给出定义。

定义: 对于一个判定问题的一个偏是的MonteCarlo算法是具有下列性质的一个概率算法:一个是回答总是正确的,但一个否回答也许是不正确的。类似的,可定义一个偏否的MonteCarlo算法,我们说一个偏是的MonteCarlo算法具有错误概率ϵ,即如果该算法对任何回答应该为是的实例至多以ϵ的概率给出一个不正确的回答否。

编程要求
根据提示,补全右侧编辑器中 Begin-End 区间的代码,对于给定的奇素数p,求解模 p 的二次剩余。具体要求如下:

从后台获取一个奇素数 p,计算并打印模 p 的二次剩余。
测试说明
平台会对你编写的代码进行测试:

测试输入:

11
预期输出:

1 3 4 5 9
开始你的任务吧,祝你成功!

#include<bits/stdc++.h>
using namespace std;
const int maxn=10010;
int MAP[maxn];
vector<int>G;
//在下面Begin和End之间补全代码,输出相应的结果
int main()
{int p;cin>>p;/*********** Begin ***********/for(int i=1; i<p; i++)if(!MAP[i*i%p]&&i*i%p!=0){G.push_back(i*i%p);MAP[i*i%p]++;}sort(G.begin(),G.end());for(auto &it:G)cout<<it<<' ';cout<<endl;/*********** End ***********/return 0;
}

第3关:二次剩余

二次剩余是数论基本概念之一。它是初等数论中非常重要的结果,不仅可用来判断二次同余式是否有解,还有很多用途。C.F.高斯称它为算术中的宝石,他一人先后给出多个证明。

本关任务:利用Miller−Rabin算法判断给定的数是否是素数。

编程要求
根据提示,补全右侧编辑器中 Begin-End 区间的代码,利用Miller−Rabin算法判断给定的数是否是素数。具体要求如下:

从后台获取一个数字 n ,利用 Miller-Rabin 算法判断给定的数是否是素数,是素数输出 YES ,否则输出 NO。
测试说明
平台会对你编写的代码进行测试:

测试输入:

3
预期输出:

YES
开始你的任务吧,祝你成功!

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF_INT=0x3f3f3f3f;
const LL INF_LL=0x3f3f3f3f3f3f3f3f;
/*********** Begin ***********/
//防爆乘法
LL q_muti(LL a,LL b,LL p)
{LL res=0;a%=p;while(b){if(b&1)res=(res+a)%p;a=(a<<1)%p;b>>=1;}return res;
}
LL q_power(LL a,LL b,LL p)
{LL res=1;a%=p;while(b){if(b&1)res=q_muti(res,a,p);a=q_muti(a,a,p);b>>=1;}return res;
}
bool m_l(LL x,LL a)
{if(q_power(a,x-1,x)!=1)return false;LL q=x-1;while(!(q&1)){q>>=1;LL t=q_power(a,q,x);if(t==1)continue;if(t==x-1)break;return false;}return true;
}
bool is_prime(LL x)
{if(x==0||x==1)return false;if(x==2||x==3)return true;else{int k=10; //设置测试底数个数for(int i=0; i<k; i++){LL a=rand()%(x-3)+2;if(!m_l(x,a))return false;}return true; //所有底数测试通过即可判为质数}
}
/*********** End ***********/
//在下面Begin和End之间补全代码,输出相应的结果
int main()
{LL n;cin>>n;/*********** Begin ***********/if(is_prime(n))cout<<"YES\n";elsecout<<"NO\n";/*********** End ***********/return 0;
}

RSA密码体制(头歌)相关推荐

  1. 数据采集与清洗基础习题(二)Python爬虫常用模块,头歌参考答案

    数据采集习题参考答案,会持续更新,点个关注防丢失.为了方便查找,已按照头歌重新排版,朋友们按照头歌所属门类查找实训哦,该篇为Python爬虫常用模块. 创作不易,一键三连给博主一个支持呗. 文章目录 ...

  2. 两万字详细爬虫知识储备,数据采集与清洗基础习题(一)头歌参考答案

    数据采集习题参考答案,会持续更新,点个关注防丢失.为了方便寻找,按照头歌的门类从新整理了实训的分类,朋友们记得看标题哦,按标题寻找! 该篇为爬虫知识储备! 文章目录 实训一:HTML基础 第一关:初识 ...

  3. linux操作系统中的shell编程----基于头歌实践教学编写shell脚本测试结果

    一.前言 今天,又要使用我的大学技能-写实验报告.linux操作系统课程实验课到了尾声,这是最后一次linux操作系统实验报告,我喜极而泣. 行了,废话不多说,我直接开始肝!!本实验是基于基于头歌实践 ...

  4. 头歌 初识Redis

    头歌 初识Redis 第一关 redis-cli set hello redis lpush educoder-list hello rpush educoder-list educoder rpus ...

  5. 数据结构实验头歌 第1关:求图的最短路径

    任务描述 本关任务:编程实现求图的最短路径 相关知识 最短路径的Dijkstra算法: 求最短路径就是求图中的每一个点到图中某一个给定点(认为编号为0的点)的最短距离. 具体算法就是初始有一个旧图,一 ...

  6. 头歌c语言实训作业题解

    头歌c语言实训作业题解 持续更新 C语言程序设计编辑与调试环境 1.打印输出 Hello World 2.打印输出图形 3.求三个数的最大值 4.熟悉C语言调试环境 C语言中最基本的输入输出 1.看看 ...

  7. 头歌——c++单向链表

    #include <iostream> using namespace std; struct Linked {/********* Begin *********///结构体的成员变量 ...

  8. 头歌HTML实训笔录

    头歌实训笔录 HTML前端基础 第2关 创建 - 标签 HTML前端基础 因学校Java 前端等写代码的作业都在头哥平台上操作,就记录一下每一关的代码吧.. ##第1关 创建第一个 HTML 标签 / ...

  9. 如何下载头歌平台在线实验闯关中的文件到本地进行查看

    如何下载头歌平台在线实验闯关中的文件到本地进行查看 文章目录 如何下载头歌平台在线实验闯关中的文件到本地进行查看 一.前言 二.进入在线实验 三.使用SSH工具连接实验所属服务器 四.下载需要的文件到 ...

最新文章

  1. 第02期 基础算法(Leetcode)刻意练习开营计划
  2. 用Python实现深度学习框架
  3. 怎么进入mysql workspace_MySQL 继续-- Win7 安装及后续工作
  4. java 数据库提交,java.sql.Statement向数据库提交的语句不可以是SQL语句的()。
  5. H5 Canvas刮刮乐
  6. down redis集群_Redis总结(十)redis集群-哨兵模式
  7. 招聘 | 香侬在召唤:算法工程师,让金融把你的代码变现
  8. 查看selenium python的api小记录
  9. openjdk8 项目结构_OpenJDK织机和结构化并发
  10. 挂载硬盘问题:mount: wrong fs type, bad option, bad superblock on /dev/sdb,
  11. 基于深度神经网络的动作检测:问题与解决方案
  12. 【渝粤教育】电大中专测量学 (4)作业 题库
  13. booth算法原理的简单化理解
  14. 李少白讲摄影-不放过一切光线 地坛书市新书首发圆满结束
  15. 面试必备:虾皮服务端15连问
  16. linux nas mp4 播放器,我的NAS我的地盘 篇十:威联通NAS软件介绍与应用之QVideo篇
  17. 创业公司有哪些把服务器放在阿里云?有什么缺点?
  18. F11一键还原精灵使用教程(详细图文步骤)
  19. 计算机工作自动化的特点,计算机内部自动化操作等特点.doc
  20. 算法(第4版) 编写一个静态方法lg(),接受一个整型参数N,返回不大于log2N的最大整数。(不要使用Math库)

热门文章

  1. 神秘常量0x077CB531,德布莱英序列的恩赐
  2. stm32数码管显示数字 流程图_怎样用keil编写4位数码管显示1234的程序
  3. mysql修改连接密码
  4. 2016全球最美面孔100人---名单+真图
  5. 仿二手车之家下拉列表(优化)
  6. 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
  7. css 隐藏 scrollbar
  8. 中秋节图案 用java代码打出来_以下哪个不是中秋节传说?
  9. 基于色觉(色盲)模型的色盲成因
  10. ComponentScan