请一JAVA算法逆运算,400积分

galaxypilot 2019-11-28 12:02:31
private static void eighth(byte[] target){//[5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15]
byte abyte0[] = new byte[11];
long l3 = (target[9] << 4) + target[10]; //47
for(int i = 0; i < 9; i++)
{
long l5 = 9L * l3 + (long)i;//423
long l6;
long l7 = ((l6 = 0x7fffffffL) - 1L) / 256L;//8388607
long l8 = (l6 << 1) + 2L;//4294967296
long l9 = 16807L;//16807
long l10 = 1L;
for(int i1 = 0; (long)i1 < l5 + 12L; i1++)
{
if((l10 = (int)(l10 *= l9)) < 0L)
l10 += l8;
l10 %= l6;
}
byte byte1;
byte1 = (byte)(int)(l10 / l7);
abyte0[i] = (byte)(target[i] - byte1 & 0xf);//[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0];
}
}
byte参数 target 实际值 =[5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15],
经该方法运算后 abyte0 =[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0];
现在要根据 abyte0 =[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0] 逆向算出 target,数组最后两位可以不管。
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
galaxypilot 2019-11-28
  • 打赏
  • 举报
回复
牛X,方便加个微信吗?
galaxypilot 2019-11-28
  • 打赏
  • 举报
回复
这么快,牛X, long l3 = (target[9] << 4) + target[10]; 是参数数组最后两位计算得到了, 我给的例子中[5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15] 是47 我试一下,晚点再回粘。谢谢!
qybao 2019-11-28
  • 打赏
  • 举报
回复
你这个有信息丢失,也就是l3没法知道了,还原不了
如果能知道l3,也就是你把数组的后两位也保留,估计还可以还原

public class Sample {
public static void main(String[] args) {
try {
byte[] org = {5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15};
byte[] chg = eighth(org);
System.out.println(Arrays.toString(chg)); //[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0];
byte b1 = 2, b2 = 15; //原数组的9,10位元素
long l3 = (b1 << 4) + b2;
byte[] target = restore(chg, l3); //原数组后两位没丢失的话,l3可以放到方法里求,如果丢失,看看通过有什么方法传参数
System.out.println(Arrays.toString(target));

} catch (Exception e) {
e.printStackTrace();
}
}

private static byte[] restore(byte[] src, long l3) {
byte[] result = new byte[11];
for (int i=0; i<9; i++) {
long l5 = 9L * l3 + (long)i;//423
long l6;
long l7 = ((l6 = 0x7fffffffL) - 1L) / 256L;//8388607
long l8 = (l6 << 1) + 2L;//4294967296
long l9 = 16807L;//16807
long l10 = 1L;
for(int i1 = 0; (long)i1 < l5 + 12L; i1++)
{
if((l10 = (int)(l10 *= l9)) < 0L)
l10 += l8;
l10 %= l6;
}
byte byte1;
byte1 = (byte)(int)(l10 / l7);
result[i] = (byte)((src[i] + byte1) & 0xf);
}
return result;
}

private static byte[] eighth(byte[] target){//[5, 4, 3, 8, 6, 0, 12, 10, 10, 2, 15]
byte abyte0[] = new byte[11];
long l3 = (target[9] << 4) + target[10]; //47
System.out.println(l3);
for(int i = 0; i < 9; i++)
{
long l5 = 9L * l3 + (long)i;//423
long l6;
long l7 = ((l6 = 0x7fffffffL) - 1L) / 256L;//8388607
long l8 = (l6 << 1) + 2L;//4294967296
long l9 = 16807L;//16807
long l10 = 1L;
for(int i1 = 0; (long)i1 < l5 + 12L; i1++)
{
if((l10 = (int)(l10 *= l9)) < 0L)
l10 += l8;
l10 %= l6;
}
byte byte1;
byte1 = (byte)(int)(l10 / l7);
abyte0[i] = (byte)((target[i] - byte1) & 0xf);//[0, 10, 7, 5, 0, 7, 1, 1, 11, 0, 0];
}
//abyte0[9] = target[9]; //保留后两位的话
//abyte0[10] = target[10];//还有可能还原
return abyte0;
}
}
一、本书的内容 目前,市面上有关计算机算法的书很多,有些叙述严谨但不全面,另外一些则是容量很大但不够严谨。本书将叙述的严谨性以及内容的深度和广度有机地结合了起来。第1版推出后,即在世界范围内受到了广泛的欢迎,被各高等院校用作多种课程的教材和业界的标准参考资料。它深入浅出地介绍了大量的算法及相关的数据结构,以及用于解决一些复杂计算问题的高级策略(如动态规划、贪心算法、平摊分析等),重点在于算法的分析和设计。对于每一个专题,作者都试图提供目前最新的研究成果及样例解答,并通过清晰的图示来说明算法的执行过程。. 本书是原书的第2版,在第1版的基础之上增加了一些新的内容,涉及算法的作用、概率分析和随机化算法、线性规划,以及对第1版中详尽的、几乎涉及到每一小节的修订。这些修订看似细微,实际上非常重要。书中引入了“循环不变式”,并贯穿始终地用来证明算法的正确性。在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所理解。相对来说,每一章都可以作为一个相对独立的单元来教授或学习。书中的算法以英语加伪代码的形式给出,只要有一点程序设计经验的人都能读懂,并可以用任何计算机语言(如C/C++和Java等)方便地实现。在书中,作者将算法的讨论集中在一些比较现代的例子上,它们来自分子生物学(如人类基因项目)、商业和工程等领域。每一小节通常以对相关历史素材的讨论结束,讨论了在每一算法领域的原创研究。 本书的特点可以概括为以下几个方面: 1.概念清晰,广度、深度兼顾。 本书收集了现代计算机常用的数据结构和算法,并作了系统而深入的介绍。对涉及的概念和背景知识都作了清晰的阐述,有关的定理给出了完整的证明。 2.“五个一”的描述方法。 本书以相当的深度介绍了许多常用的数据结构和有效的算法。编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。.. 3.图文并茂,可读性强。 书中的算法均以通俗易懂的语言进行说明,并采用了大量插图来说明算法是如何工作的,易于理解。 4.算法的“伪代码”形式简明实用。 书中的算法均以非常简明的“伪代码”形式来设计,可以很容易地把它转化为计算机程序,直接应用。 注重算法设计的效率,对所有的算法进行了仔细、精确的运行时间分析,有利于进一步改进算法。 三、本书的用法 本书对内容进行了精心的设计和安排,尽可能考虑到所有水平的读者。即使是初学计算机算法的人,也可以在本书中找到所需的材料。 每一章都是独立的,读者只需将注意力集中到最感兴趣的章节阅读。 1.适合作为教材或教学参考书。 本书兼顾通用性与系统性,覆盖了许多方面的内容。本书不但阐述通俗、严谨,而且提供了大量练习和思考题。针对每一节的内容,都给出了数量和难度不等的练习题。练习题用于考察对基本内容的掌握程度,思考题有一定的难度,需进行精心的研究,有时还通过思考题介绍一些新的知识。 前言回到顶部↑本书提供了对当代计算机算法研究的一个全面、综合性的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。. 书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了230多幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。 本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,因此,本书也可以供专业技术人员自学之用。 本书是第2版。在这个版本里,我们对全书进行了更新。所做的改动从新增了若干章,到个别语句的改写。 致使用本书的教师 本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。 教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;在研究生课程中,则可以完整地讲授每一章。 全书包含920多个练习题和140多个思考题。每一节结束时给出练习题,每一章结束时给出一些
一、本书的内容 目前,市面上有关计算机算法的书很多,有些叙述严谨但不全面,另外一些则是容量很大但不够严谨。本书将叙述的严谨性以及内容的深度和广度有机地结合了起来。第1版推出后,即在世界范围内受到了广泛的欢迎,被各高等院校用作多种课程的教材和业界的标准参考资料。它深入浅出地介绍了大量的算法及相关的数据结构,以及用于解决一些复杂计算问题的高级策略(如动态规划、贪心算法、平摊分析等),重点在于算法的分析和设计。对于每一个专题,作者都试图提供目前最新的研究成果及样例解答,并通过清晰的图示来说明算法的执行过程。. 本书是原书的第2版,在第1版的基础之上增加了一些新的内容,涉及算法的作用、概率分析和随机化算法、线性规划,以及对第1版中详尽的、几乎涉及到每一小节的修订。这些修订看似细微,实际上非常重要。书中引入了“循环不变式”,并贯穿始终地用来证明算法的正确性。在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所理解。相对来说,每一章都可以作为一个相对独立的单元来教授或学习。书中的算法以英语加伪代码的形式给出,只要有一点程序设计经验的人都能读懂,并可以用任何计算机语言(如C/C++和Java等)方便地实现。在书中,作者将算法的讨论集中在一些比较现代的例子上,它们来自分子生物学(如人类基因项目)、商业和工程等领域。每一小节通常以对相关历史素材的讨论结束,讨论了在每一算法领域的原创研究。 本书的特点可以概括为以下几个方面: 1.概念清晰,广度、深度兼顾。 本书收集了现代计算机常用的数据结构和算法,并作了系统而深入的介绍。对涉及的概念和背景知识都作了清晰的阐述,有关的定理给出了完整的证明。 2.“五个一”的描述方法。 本书以相当的深度介绍了许多常用的数据结构和有效的算法。编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。.. 3.图文并茂,可读性强。 书中的算法均以通俗易懂的语言进行说明,并采用了大量插图来说明算法是如何工作的,易于理解。 4.算法的“伪代码”形式简明实用。 书中的算法均以非常简明的“伪代码”形式来设计,可以很容易地把它转化为计算机程序,直接应用。 注重算法设计的效率,对所有的算法进行了仔细、精确的运行时间分析,有利于进一步改进算法。 三、本书的用法 本书对内容进行了精心的设计和安排,尽可能考虑到所有水平的读者。即使是初学计算机算法的人,也可以在本书中找到所需的材料。 每一章都是独立的,读者只需将注意力集中到最感兴趣的章节阅读。 1.适合作为教材或教学参考书。 本书兼顾通用性与系统性,覆盖了许多方面的内容。本书不但阐述通俗、严谨,而且提供了大量练习和思考题。针对每一节的内容,都给出了数量和难度不等的练习题。练习题用于考察对基本内容的掌握程度,思考题有一定的难度,需进行精心的研究,有时还通过思考题介绍一些新的知识。 前言回到顶部↑本书提供了对当代计算机算法研究的一个全面、综合性的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。. 书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了230多幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。 本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,因此,本书也可以供专业技术人员自学之用。 本书是第2版。在这个版本里,我们对全书进行了更新。所做的改动从新增了若干章,到个别语句的改写。 致使用本书的教师 本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。 教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;在研究生课程中,则可以完整地讲授每一章。 全书包含920多个练习题和140多个思考题。每一节结束时给出练习题,每一章结束时给出一些
程序 = 数据结构 + 算法  程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法                ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。 本视频由微软全球最有价值专家尹成录制,拒绝念PPT,代码实战数据结构与算法导论。除了传统数据结构算法,加入高并发线程安全数据结构,分布式负载均衡算法,分布式哈希表,分布式排序等等现代算法。  算法,晦涩难懂,却又是IT领域受重视的素养之一。可以说,算法能力往往决定了一个程序员能够走多远。因此,BAT/FLAG等国内外各大名企非常喜欢在面试环节考核求职者的算法编程,这也成为了无数准程序员们过不去的一道“坎”。如何入门并成为一名出色的算法工程师?但无论半路出家还是科班出身,除学生时代搞算法竞赛的同学外真正用心学习过算法与数据结构太少太少。对于后期想要学习算法与数据结构却不得不面对以下问题:没有自己的知识框架,无法关联知识点,学习效率低有疑问而无人解答,有问题无法理解全靠猜测,一个问题卡好几天市面上资料题解质量参差不齐,正确性未可知Google算法-工程师尹成大哥学习算法
22春"计算机科学与技术"专业《计算方法》在线作业答案参考 1. 下列叙述中正确的是( )。 A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D.上述三种说法都不对 参考答案:B 2. 设变量定义为char s[]="hello",则数组s中有6个元素。( ) A.错误 B.正确 参考答案:B 3. 一个有n个结点的图,最多有( )个连通分量。 A.0 B.1 C.n-1 D.n 参考答案:D 4. 高精度计算时可以用字符串来存储运算结果。( ) A.错误 B.正确 参考答案:B 5. 字符串的结束标记是( )。 A.0' B.' ' C.'\0' D.'\n' 参考答案:C 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第1页。6. 列主元素消元法不是直接法中常用的方法。( ) A.正确 B.错误 参考答案:B 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第1页。 7. 两个字符串中的字符个数相同时才能进行字符串大小的比较。( ) A.错误 B.正确 参考答案:A 8. 下列说法错误的是( ) A.使用高级计算机语言,如C、C++、Java,编写的程序,都需要经过编译器编译或解释,才能转化成机器能够识别并能执行的二进制代码 B.如何一步步的跟踪代码,找到问题,搞明白为何程序不能正常运行,这个过程称为调试程序 C.自动化的工具同样也能够帮助你跟踪程序,尤其当程序很复杂时效果更加明显,这种工具叫做调试器 D.调试器不能解决程序中出现的问题 参考答案:D 9. strcmp( )函数用来( )。 A.求字符串长度 B.比较字符 C.求子串 D.字符串拷贝 参考答案:B 10. scanf( )、printf( )可以输入输出几个字符串。( ) A.错误 B.正确 参考答案:B 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第2页。11. 线性方程组的解法大致可以分为( )。 线性方程组的解法大致可以分为( )。 A、直接法和间接法 B、直接法和替代法 C、直接法和迭代法 D、间接法和迭代法 参考答案:C 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第2页。 12. 非线性结构的逻辑特征是一个结点可能有多个直接前趋和直接后继。( ) A.错误 B.正确 参考答案:B 13. 线性插值虽然只利用了两个节点上的信息,但是精度却比较高。( ) 线性插值虽然只利用了两个节点上的信息,但是精度却比较高。( ) A、错误 B、正确 参考答案:A 14. 按"先进后出"原则组织数据的数据结构是队列。( ) A.错误 B.正确 参考答案:A 15. tolower( )函数用来( )。 A.小写字母转换为大写字母 B.大写字母转换为小写字母 C.小写字母转换为大写字母,同时大写字母转换为小写字母 D.判断大小写 参考答案:B 16. 简单选择排序和冒泡排序都是一种不稳定排序方法。( ) A.错误 B.正确 参考答案:A 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第3页。17. 利用无穷递推过程的算法,只需要建立计算公式,不需要解决精度控制范围。( ) 利用无穷递推过程的算法,只需要建立计算公式,不需要解决精度控制范围。( ) A、错误 B、正确 参考答案:A 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第3页。 18. 高斯消去法是对增广矩阵(A"b)进行一系列的初等行变换。( ) A.正确 B.错误 参考答案:A 19. 微分和积分是一对互逆的数学运算。( ) 微分和积分是一对互逆的数学运算。( ) A、错误 B、正确 参考答案:B 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第4页。20. 在深度为7的满二叉树中,度为2的结点个数为64。( ) A.错误 B.正确 参考答案:A 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第4页。 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧