自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 问答 (1)
  • 收藏
  • 关注

原创 数据结构:二叉排序树(Binary Sort Tree,Bst)

二叉排序树相关

2023-07-01 19:53:44 448

原创 Python:SM4

SM4

2022-06-25 17:49:20 2473 5

原创 Python:ElGamal

百度百科传送门基于迪菲-赫尔曼密钥交换的非对称加密算法EIGamal公开密钥密码体制是基于有限域中离散对数间题的难解性。它所根据的原理是:求解离散对数是困难的,而其逆运算可以应用平方乘的方法有效的计算出来。在相应的群G中,指数函数是单向函数。运行报错、超时请看说明...

2022-06-22 17:17:13 369

原创 Python:SM3哈希算法、SM3密码杂凑算法

SM3即国家密码管理局发布的SM3密码杂凑算法嗯哼最终调用函数sm3hash(m)即可参数输入的m为16进制的字符串输出为16进制的64位(256bit)字符串其余函数及常量请参考上方文档iv='7380166f4914b2b9172442d7da8a0600a96f30bc163138aae38dee4db0fb0e4e'def t(j): if j<16: return 0x79cc4519 return 0x7a879d8adef csl(x

2022-02-01 00:00:00 3983

原创 Python:SM2

SM2?

2022-01-19 23:11:24 9448 3

原创 C:BM(Berlekamp-Massey)算法

伯利坎普-梅西算法(Berlekamp-Massey)百度百科:Berlekamp-Massey算法是一种算法,可以找到给定二进制输出序列的最短线性反馈移位寄存器(LFSR)。 该算法还将在任意场中找到线性递归序列的最小多项式。算法原理(跟网上流传的原理方法有些不同)算法流程我的思路我认为这种算法的主要难度在于给定或已算出的f i (x)对a(i+1)的计算,参考思路如下:当然这也是最直接暴力的思路,再次提醒,仅供参考程序代码数组长度均为可调输入不超过数组长度的二进制序列,如01

2021-12-31 10:51:40 3555

原创 Python:DES

DES不得不说,作者是真的懒 ⬇百度百科-DES函数说明ip()、ipinv()、e()、p()、pc1()、pc2()依次为初始置换、逆初始置换、选择扩展运算、置换运算以及对密钥K的置换选择1、置换选择2csl():对密钥进行左循环移位操作s():8个S盒代换f():轮函数F(R,K)输入输出明文m、密文c、初始密钥k:均为16位16进制(64bit)的字符串,可少不可多(因为懒,所以没写分组操作在加密和解密时均会有中间变量的输出如:子密钥等源代码def ip(m): t

2021-12-31 10:49:36 438

原创 Python:Diffie-Hellman共享会话密钥

Diffie-Hellman关于这两位闻名世界的靓仔,相信各位并不陌生,资料和他俩的贡献都不少DH-度娘版算法描述假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XA<q),并计算公开密钥YA=a^XA mod q。A对XA的值保密存放而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=a^XB mod q。B对XB的值保密存放而使YB能被A公开获得。看完感觉懵懵的例子——来自度娘的例子密钥交换基于素数q = 97和97

2021-12-09 00:20:02 812

原创 Python:一些关于素数的自定义函数(我的prime.py

目录前提引入Miller Rabin素性检测素数判断生成长度为n的素数(十进制)某个数的素因子列表模m的最小原根模m的所有原根模m的随机原根a模m的逆a模m的阶(order前提引入请自行添加import和其他变量部分函数会调用前面的函数,如素数判断会调用rabinimport randomimport math等,还可以import time比较运行时间,择优start=time.time()'''函数'''end=time.time()print(end-start)小

2021-11-17 13:19:05 3289

原创 C:Vigenere维吉尼亚密码的加解密

关于维吉尼亚密码实质上就是分组然后分别用不同密钥凯撒加密详情参考百度百科-维吉尼亚密码维吉尼亚密码的破解破解原理先利用重合指数法(在英文文本中,找到两个等同字母发生的概率约为0.065)猜测出密钥长度,再通过计算互重合指数(两串英文文本中,一串中的一个随机元素与另一串中一个随机元素相同的概率约为0.065)计算出每个密钥之间的相对间隔,最后通过不断猜测第一个密钥(最多尝试26次),输出可能的密钥及相应的明文。算法代码先计算出可能的密钥串中每个密钥之间的关系K注意可调值(已标明#includ

2021-10-25 23:42:17 756 1

原创 Python:CRT中国剩余定理的简单实现

简单实现中国剩余定理,仅适用于模数两两互素的情形,否则跳出m序列和a序列均采用逐个输入的方式以字母q作为每个序列最后一个元素作为结束符号import mathdef modinv(M,m): x1,x2,x3=1,0,M y1,y2,y3=0,1,m while y3!=0: q=x3//y3 t1,t2,t3=x1-q*y1,x2-q*y2,x3-q*y3 x1,x2,x3=y1,y2,y3 y1,y2,y3

2021-10-21 16:37:21 571

原创 Python:Fermat素性检测

算法背景与原理:1、Fermat 小定理:给定素数 p,a∈Z,则有 a^(p-1)%p=12、Fermat 素性检测算法:奇整数 m,若任取一整数 2<=a<=m-2,gcd(a,m)=1,使得 a^(m-1)(mod m)=1,则 m 至少有 1/2 的概率为素数算法步骤:1、从键盘输入待检测的大整数 m2、给出安全参数 k3、随机选取整数 a,满足 a∈[2,m-2]4、计算 g=gcd(a,m),如果 g=1 进行下一步,否则不是素数,跳出5、计算 r=a^(m-1)(m

2021-10-19 15:26:19 1158

原创 C: 期末预测之安全指数

题目背景期末要到了,小菜同学找到了自己的好朋友顿顿,希望可以预测一下自己这学期是否会挂科。题目描述首先,顿顿选取了如“课堂表现”、“自习时长”、“作业得分”、“社团活动参与度”等 n 项指标作为预测的依据。然后,顿顿根据自己平日里对小菜的暗中观察,以百分制给每一项指标打分,即小菜同学第 i(1 ≤ i ≤ n)项指标的得分 scorei 是一个 [1,100] 范围内的整数。鉴于每一项指标的重要性不尽相同,顿顿用一个 [-10,10] 范围内的整数 wi 来表示第 i(1 ≤ i ≤ n)项指标的

2020-12-31 10:41:35 669 2

原创 C: 买菜

问题描述小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车。具体的,对于小H来说有n个不相交的时间段[a1,b1],[a2,b2]…[an,bn]在装车,对于小W来说有n个不相交的时间段[c1,d1],[c2,d2]…[cn,dn]在装车。其中,一个时间段[s, t]表示的是从时刻s到时刻t这段时间,时长为t-s。  由于他们是好朋友,他们都在广场上装车的时候会聊天,他们想知道他们可以聊多长时间。输入格式

2020-12-29 12:30:14 98

原创 C:卖菜

问题描述在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。  第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。  注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。  给定第一天各个商店的菜价,请计算第二天每个商店的菜

2020-12-28 23:29:23 135

原创 C:窗口

问题描述在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。  当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。  现在我们希望你写一个程序模拟点击窗口的过程。输入格式输入的第一行有两个正整数,即 N 和 M。(1

2020-12-14 22:53:15 148

原创 C:相反数

问题描述有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。输入格式第一行包含一个正整数 N。(1 ≤ N ≤ 500)。  第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。输出格式只输出一个整数,即这 N 个数中包含多少对相反数。样例输入51 2 3 -1 -2样例输出2#include<stdio.h>int main(){ int n; scanf("%d",&a

2020-12-14 22:03:25 1068

原创 C:称检测点查询

题目背景2020 年 6 月 8 日,国务院联防联控机制发布《关于加快推进新冠病毒核酸检测的实施意见》,提出对“密切接触者”等八类重点人群“应检尽检”,其他人群“愿检尽检”。问题描述某市设有 n 个核酸检测点,编号从 1 到 n ,其中 i 号检测点的位置可以表示为一个平面整数坐标 ( xi , yi ) 。为方便预约核酸检测,请根据市民所在位置 ( X , Y ),查询距其最近的三个检测点。多个检测点距离相同时,编号较小的视为更近。输入格式输入共 n+1 行。第一行包含用空格分隔的三个整数

2020-12-05 14:28:16 907

原创 Java:8 - 2查找文件

问题描述:实现一个程序,该程序的输入是一个目录字符串和一个文件拓展名字符串,程序递归地搜索该目录及其各级子目录,在这些目录中查找所有拓展名与指定拓展名相同的文件,将这些文件的相对路径名记录下来并向控制台输出。import java.io.File;import java.util.*;public class Eighth2 { static int k=0; public static void main(String[] args) { System.out.print("请输入需要读

2020-12-03 20:53:06 121

原创 Java:6 - 10关键字计数

问题描述:实现一个类 KeywordIdentifier,读入以 java 程序源文件,输出各个关键字的个数import java.io.*;import java.util.Scanner;public class KeywordIdentifier { private static String[] keywordArray = {"abstract","assert","boolean","break","byte","case","catch","char","class","const"

2020-12-03 20:45:44 203

原创 Java:插入排序和归并排序

插入排序import java.util.Scanner;public class Insertsort { public static int[] randomarray(int len,int max) { int[] arr=new int[len]; for(int i=0;i<len;i++) { arr[i]=(int)(Math.random()*max); } return arr; } public static void main(String

2020-12-03 20:30:24 144

原创 《C程序设计》第十章关于文件的操作(资源内容)

1. C文件概述文件:文件指存储在外部介质(如磁盘磁带)上数据的集合。操作系统是以文件为单位对数据进行管理的。(1)根据文件的内容,可分为程序文件和数据文件,程序文件又可分为源文件、目标文件和可执行文件。(2)根据文件的组织形式,可分为顺序存取文件和随机存取文件。(3)根据文件的存储形式,可分为ASCII码文件和二进制文件。ASCII码文件的每1个字节存储1个字符,因而便于对字符进行逐个处理。但一般占用存储空间较多,而且要花费转换时间(二进制与ASCII码之间的转换)。二进制文件是把内存中的数

2020-12-03 20:25:07 301

原创 Java 2-19吸血鬼数字

问题描述:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,这对数字个包含乘积的一半位数的数字,数字选取后可任意排序。例如,下列数字都是“吸血鬼”数字:1260 = 21 x 601827 = 21 x 872187 = 27 x 81写出一个程序,找出4位数的所有吸血鬼数字。该代码以Two19为主类,故应创建一个Two19.java文件或将主类( public class )名称修改使文件名与主类名相同public class Two19 { public static void m

2020-12-03 19:27:31 48

原创 Java 2-18求和最大的行

问题描述:实现程序,对于一个整型的二维数组,计算每一行的数字之和,记录数字之和最大的行的行号,并输出这一行号。该代码以Two18为主类,故应创建一个Two18.java文件或将主类( public class )名称修改使文件名与主类名相同import java.util.*;public class Two18 { public static void main(String[] args){ Scanner scan=new Scanner(System.in); System.out

2020-12-03 19:16:18 249

原创 程序设计基础综合实验:模拟学生成绩管理系统

现有若干学生的学籍档案信息,要求编写一个应用软件对其进行日常管理,以实现学生档案信息的插入和删除,并能根据学生姓名查询。(系统尚未完善,如缺少排序等#include<stdio.h>#include<stdlib.h>#include<string.h>struct stu{ char all[100]; /*字符串形式包含每一组数据所有信息*/ ...

2020-06-27 21:00:16 598

原创 数据结构275:哈弗曼树

问题描述假设用于通信的电文由n个字符组成,字符在电文中出现的频度(权值)为w1,w2,…,wn,试根据该权值序列构造哈夫曼树,并计算该树的带权路径长度。输入说明第1行为n的值,第2行为n个整数,表示字符的出现频度。输出说明输出所构造哈夫曼树的带权路径长度。输入样例87 19 2 6 32 3 21 10输出样例261#include<stdio.h>#include<stdlib.h>typedef struct node{ int weight,len

2020-05-26 00:15:48 1143

原创 数据结构274:中序遍历二叉排序树

问题描述输入一整数序列,建立二叉排序树,然后中序遍历。输入说明输入第一行为整数的个数n,第二行是具体的n个整数。输出说明建立二叉排序树,然后输出中序遍历的结果。输入样例51 6 5 9 8输出样例1 5 6 8 9#include<stdio.h>#include<stdlib.h>typedef struct node{ int key; struct node *lchild,*rchild;}bst;bst *root;bst *inser

2020-05-26 00:15:16 1876

原创 数据结构273:统计二叉树中的叶子结点数

问题描述建立二叉链表,统计二叉树中的叶子结点数并输出。输入说明按照完全二叉树的形式输入二叉树的各结点数据(字符),其中虚结点用’@‘表示。输入以’#'结束。输出说明输出叶子结点的个数及具体值。第一行为叶子结点的数据值,各数据用空格分隔,第二行为叶子结点的个数。输入样例abc@@de#输出样例b d e3...

2020-05-26 00:14:54 2822 2

原创 程序设计综合实验三

《C程序设计》第十章关于文件的操作

2020-04-27 00:17:08 340

原创 数据结构迟到的267:判断栈输出顺序正确与否

问题描述给定一个栈,其中最多存储M个数据。将N个数据以1,2,3,…,N的顺序压栈,然后再随机弹栈。判断一下哪些是有可能的弹栈顺序,而哪些不是。例如M是5,N是7,我们可以得到1, 2, 3, 4, 5, 6, 7的弹栈顺序,而不能得到3, 2, 1, 7, 5, 6, 4这样的弹栈顺序。(M,N<=1000)输入说明输入包含了一种情况下的测试数据。在每种情况下,有三组输入数据:第一...

2020-04-13 22:13:33 1528 3

原创 数据结构269:判断字符串是否为回文(即是否有中心对称关系)

问题描述输入一个字符串,判断其是否为回文(即是否有中心对称关系)。其中,abccba与abcba都可以被判断是回文,而abcfa就不是回文。输入说明输入字符串,判断是否回文。输出说明当字符串是回文的时候,输出right当字符串不是回文的时候,输出wrong输入样例样例1:abcba样例2:abccba样例3:abcfa样例4:11221输出样例样例1:right样例2:...

2020-04-13 17:48:59 2949 2

原创 数据结构268:括号配对问题

问题描述现在有一行括号序列,请你检查这行括号是否配对。输入说明第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符。输出说明每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Ye...

2020-04-13 17:46:00 699

原创 数据结构265:队列中的元素排序

问题描述给定一个队列,请用一系列合法的队列操作函数,比如判断队列是否为空,入队操作,出队操作,将队列中的元素从小到大排序。输入说明输入首先给出1个正整数N(N<1000),表示队列中元素的个数。随后按入队的顺序给出N个整数。输出说明在一行中输出排序后出对的序列。数字间以空格分隔,但末尾不得有多余空格。输入样例10 3 6 4 8 7 2 9 0 1 5输出样例0 1 2 3...

2020-04-13 17:39:02 2167 3

原创 数据结构264:反转链表

问题描述输入一个链表,反转链表后,输出链表的所有元素。输入说明输入第一行为整数n(n>=1),代表测试链表数。从第二行开始每行表示一个链表,其中第一个数据表示链表中数据个数,其余数据表示要测试的链表中的数据,均为整数。输出说明每一行对应一个链表反转后的元素。输入样例35 1 2 3 4 53 2 4 51 3输出样例5 4 3 2 15 4 23#includ...

2020-04-13 17:37:10 536 1

原创 数据结构263:递增链表的插入

问题描述幼儿园小朋友要玩老鹰捉小鸡的游戏,老师把在场的小朋友按身高递增的顺序排好了队,这时有一位小朋友来晚了,老师需要把他按照身高插入到排好的队列中,请你帮助幼儿园老师把这位晚到的小朋友插入到队列中合适的位置。输入说明输入的第1行包含原队列长度N(任意int范围内的非负整数)与待插入的小朋友的身高值M(单位为cm);第2行包含N个递增的小朋友的身高值代表原递增数列。输出说明根据此递增数列...

2020-04-13 17:35:29 961

原创 数据结构262:学生信息管理

问题描述某班学生的信息存放在一个线性单链表中,但每学期都有学生因故退学。现要求根据退学学生的学号,将其信息从链表中删除。假设学生的数据只保存姓名、学号、性别,并采用结构体类型描述。输入说明输入n个学生数据(1<=n<=10)。每行一个学生信息,包括:姓名(不超过20个字符的字符串)、学号(整形)、性别(字符),以空格分隔。学生数据以#结束,并在下一行输入退学学生的学号。输出说明...

2020-04-13 17:33:30 366

原创 C243:考试排名

问题描述某考试有5道题和1道附加题,每题最高得分20分,总分计算为所有题目分数之和。给出一组考生的数据,对其按照总分从高到低进行排名,总分相同时按附加题得分高者优先。输入说明第一行为一个整数N,表示考生个数(N小于100),后面N行为考生数据,每行包含考生姓名(长度不超过20个字符)以及6个以空格分隔的整数,分别表示第一题到第五题以及附加题的得分(最后一项)。输出说明输出排序结果,每行为...

2020-04-13 17:30:23 1037

原创 C193:评分系统

题目描述:为歌唱比赛设计一个评分系统,规则如下:共有n名评委给分(0~100分,整数),要求去掉一个最高分,去掉一个最低分,剩余成绩的平均分为最终得分。输入一个正整数n(3≤n≤10),表示有n个评委,输入n个成绩,输出最终得分。输入格式:第一行输入一个正整数n(3≤n≤10),第二行输入每位评委给分,用空格分隔。输出格式:输出最终得分,结果保留两位小数。示例:输入:570 75 ...

2020-04-13 17:28:43 1684 1

原创 C191:密码编译

问题描述:有一行电文,已按照下面的规律译成密码:A>>Z a>>zB>>Y b>>yC>>X c>>x. .. .. .等等。即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变,要求编程序将密码译成原文。输入说明:输入一串字符(包含7个元素),表示密...

2020-04-13 17:26:02 482

原创 C171:考勤系统

问题描述 实验室使用考勤系统对学生进行考勤。考勤系统会记录下每个学生一天内每次进出实验室的时间。每位学生有一个唯一编号,每条考勤记录包括学生的编号,进入时间、离开时间。给出所有学生一天的考勤记录,请统计每个学生在实验室工作的时间,并按照工作时间从长到短给出一天的统计表,工作时间相同时按编号从小到大排序。输入说明 输入的第一行包含一个整数n,表示考勤记录条数。1≤n≤100,学生的编号为不...

2020-04-13 17:23:01 651 2

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除