卜踆哉数对

阿里笔试题—卜踆哉数对

今天下午做完网易笔试题,然后5点准备做腾讯的面试题,然后发现只是模拟试卷,汗!-_-!!言归正传,晚上阿里试题题目是卜踆哉数对,网上也没有相关资料。(怕不是阿里程序猿现编的数学数对,雾2333333)最后虽然好像找到了一条路径,但还是没时间去实现了。(40分钟真是短~~~)本文介绍一下我的思路(有可能并不好hhhhh)

目录


题目

实数数对 (b1+b21) 在数学上称之为卜踆哉数对,又称为B数对,他们有很多有趣的数学特点,其中参数b称之为该数对的b因子。比如3.15晚会的月份和日期就组成一个B数对,对应的b因子为4。在一些工程领域,经常需要计算对 (b1+b21)c%d 的值,其中为向下取整。请根据参数(b, c, d),计算该数据的值。 1b10000,1c10000,1d10000

过程

初来乍到

其实一开始看到这道题是懵比的。我暴力求解能算出多少?所以直接套公式编程计算。第一次结果只有40%,感觉有点低。就开始想是不是要做化简什么的。因为括号内的内容是 (a+a(a+2)) ,所以接下来就是一大堆的因数分解啊,变换啊什么的。结果没做好,想想再把程序改了吧。然后在改程序的时候发现忘记开根号了-_-!!!这也能过40%!!!!Are you kidding me !!!!改好之后一验证。果然,完整的套公式解法对于测试用例有60%是可行的。然后没办法了,才60%呀。那就只能再回归公式,这时候只剩下25分钟了。我注意到后面的取模符号%,就在想这题有没有可能是在取模符号上做文章?说到取模符号,我有想到上个礼拜在上信息安全课,老师在讲公钥密码机制的RSA算法的时候,有讲到过使用初等数论知识进行人为计算公私钥加解密的内容。

RSA内容

RSA密码体制的描述

密钥生成算法:每个用户执行以下操作
随机生成两个不同大素数p,q;
计算 n=pq,ϕ(n)=(p1)(q1) ;
随机选取整数e, 1<e<ϕ(n) ,满足 (e,ϕ(n))=1 ;
利用扩展欧基里德算法求出满足 ed=1 mod (ϕ(n)) 的整数d;
公开(n,e),保密 (p,q,ϕ(n),d) 。其中e就是加密密钥,而d就是解密密钥,n称为模数。

RSA加解密:若B要利用A的公钥进行加密,则B执行

获得A可信的公钥(n,e);
把消息按分组的方式表示为区间[0,n-1]之间的整数m;
计算 c=me mod n ;
将密文c发送给A;
解密:为从c中恢复明文m,A利用解密密钥d,计算
m=cd mod n

例如:

取p=7,q=17,则
n=pq=7×17=119
ϕ(n)=(71)(171)=6×16=96
任取e=5,则d=77.注意 5×77=385=1 mod 96

假设m = 19,
c=195mod119=19×(192)2mod119=19×3612mod119=19×42mod119=304mod119=66mod119
c=66
以上结果只需要了解一下模运算的相关知识应该不难得到。

想法

那么这个有什么关联吗?当时也是抱着试试看的想法,比较了一下。因为上面的计算内容其实是计算 ac mod d ,因为在c只有“一般大”(相较于计算机而言)的时候,我们人类就算不出上面的东西了,太麻烦!那怎么办?上面是先将acmod d 变成(a2)c2 mod d 。我们计算平方还是能算算的~

  • 那么如果这个a2==d 不用算啦,值就是0;

    • 如果这个 a2>d 对它先进行取模运算。也就是说 (a2)c2modd==(a2modd)c2
    • 上面的过程其实就是一直在做这样的事情。

      那么既然上面的方法对我们人类计算很有用,那么对于计算机计算有没有用呢?

      其实上面的过程就是认为c在很大的时候,计算很麻烦。先做部分幂s(上例中s = 2),比较 cs 与d。然后做取模运算( asmodd )得到新的底数 E ,原式变为Ecsmodd,重复循环。知道我们认为“原式”已经足够简单计算。

      题目思路

      这个想法启发了我。说了这么多终于开始介绍题目思路了:

      我认为题目中最影响运算的就是幂运算 c

      介绍图1

      如果计算完成ac 需要的时间是t,我认为计算完成 ac2 的时间是小于 t2 的。如果设 E=ac2 ,那么在 c 很大的情况下,E 也是一个大数。所以我套用上面的方法,对 E 这个大数取模,使它变为小于d 1d10000 的一个相对“小数”。重复操作至设定的一个阈值结束。

      介绍图2

      介绍图3

      这样做,是把在 c <script type="math/tex" id="MathJax-Element-52">c</script> 次幂运算中,运算到幂函数“爆炸临界点”的时候。对底数取模,使底数变“小”,使底数再次远离临界点,提高运算效率。

      总结

      当然上面这只是一个粗糙的思路,有很多细节还没有说完(原式中的取整没有考虑啊,爆炸临界点的选取啊,最终结束阈值的确定啊等等)。但是我还是会好好地把这个内容完善的。写了一个上午,第一次用MarkDown写,但是感觉它真的是个好工具!
      当然,上面我所说的也有可能就是个错误的想法(23333333333)。

      有问题请mailto:sevancozhang@gmail.com 。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值