| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2077 人关注过本帖
标题:求一个关于(k*x+b)%c=0的快速算法~
取消只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:3 
求一个关于(k*x+b)%c=0的快速算法~
如题~就是求一个(k*x+b)%c=0的快速算法~其中k和b是一个在用户端输入的1e5以内的整型实数,求x的最小值~
注意效率要尽可能高的~

[此贴子已经被作者于2017-10-12 01:05编辑过]

搜索更多相关主题的帖子: 快速 算法 实数 最小值 效率 
2017-10-12 01:03
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 4楼 rjsp
学习了……

刚刚搜了关于不定方程ax+by=c的整数解……我倒也没想到这个和不定方程有点联系~
就是要这种效率……这个算法我要慢慢消化一下~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-12 13:52
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 rjsp
说得好~就是辗转相除法思想把系数逐渐降低~可以理解~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-12 16:22
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
嗯,补充一下解(k*x)%b=c的口算过程~

以(7*x)%17=11为例~

用辗转相除法思想记录前相继两个余数的步长~
余数为7的步长为1~
7*3-17=4;
可见余数为4的步长为3;
4*2-7=1;
可见余数为1的步长为3*2-1=5;

至此容易知道11的步长为5*11=55;
周期为17,所以最小正整数解为55-17*3=4;

验证得(7*4)%17=11;

或者可以再来个大一点的~

例如计算(31*x)%75=19;

已知条件得余数为31的步长为1;
31*3-75=18;
求得余数为18的步长为3;
18*2-31=5;
求得余数为5的步长为2*3-1=5;
5*4-18=2;
求得余数为2的步长为5*4-3=17;
2*3-5=1;
求得余数为1的步长为17*3-5=46;
容易得余数19的步长为46*19;
由周期为75得结果为(46*19)%75=49;
~

[此贴子已经被作者于2017-10-13 04:45编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-13 04:32
快速回复:求一个关于(k*x+b)%c=0的快速算法~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013077 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved