Modulo 在一个数字的末尾加上两位数以计算特定模数的算法?
假设我有一个号码123456。123456 % 97 = 72. 如何确定需要在123456的末尾添加哪两个数字,以使新数字%97=1?注意--它必须始终是两位数字 例如,12345676%97=1。在这种情况下,我需要将数字“76”添加到数字的末尾 (这用于IBAN编号计算。)Modulo 在一个数字的末尾加上两位数以计算特定模数的算法?,modulo,iban,Modulo,Iban,假设我有一个号码123456。123456 % 97 = 72. 如何确定需要在123456的末尾添加哪两个数字,以使新数字%97=1?注意--它必须始终是两位数字 例如,12345676%97=1。在这种情况下,我需要将数字“76”添加到数字的末尾 (这用于IBAN编号计算。) 编辑:将100放在错误的位置这是您需要的方程式 X = Y -(Number*100 mod y) - 1 其中: Number = 123456 Y = 97 X the number y
编辑:将100放在错误的位置这是您需要的方程式
X = Y -(Number*100 mod y) - 1
其中:
Number = 123456
Y = 97
X the number you need
计算12345600到97的模,然后将(97-that+1)加到该数字上。
所以你得到了RoBorg在上面解释的whay cleaner:)模运算和常规运算并没有什么不同。解决这类问题的关键是要意识到你通常会做什么来解决这个问题仍然是有效的(在下文中,提到数字就意味着整数): 说你有 15+x=20 解决这个问题的方法是,在正则加法下,15的倒数是-15,然后你可以写(利用交换性和结合性,就像我们自然做的那样) 15+x+(-15)=(15+(-15))+x=0+x=x=20+(-15)=5 所以你的答案是x=5 现在谈谈你的问题 假设N和M是已知的,你在求模k下的x: (N+x)模k=M 首先意识到 (N+x)模k=((N模k)+(x模k))模k 为了让问题变得有意义 M mod k=M 及 x模k=x 所以通过让 N mod k=N_k 及 (a+b)模块k=a+\U k b 你有 N_k+_kx=M 这意味着你需要的是+k下N_k的倒数。这其实很简单,因为+_k下的倒数是满足这个方程的: N_k+_k(“-N_k”)=0
这实际上非常简单,因为对于一个数字y,比如0我们必须接收包含12位数字的数字 步骤1: 写入任意10位数字的随机数,即比所需数字少2位,例如1234567890–这是X 步骤2: X*100=123456789000。 “123456789000”-这是Y 步骤3: Y/97='1272750402.061856'。 “06”-这是Z 步骤4: 97–Z+1=92。 “92”-这是W 步骤5: 最终交易编号为X,后跟W,即“123456789092” 可接受数字的示例: 100000000093 100000000190 100000000287
等等。123456+1+97-((123456*100)%97)=123532答案应该是12345676,对吗?我得到了新的x=123532。如果你的解决方案是正确的,我不确定我是否理解它。括号“)”是不平衡的——三合二开。有一只燕鸥不见了吗?我想我知道了——两位数=newX-x。我想你需要把它加到你的答案中。你为什么说
-1
,而所有其他答案都有+1
?你缺少一些括号吗?
Number = 123456
Y = 97
X the number you need