jjzjj

c++ - 如果你有另一个因素和溢出的产品,你如何计算一个因素?

a*x=b我有一个看似相当复杂的乘法/imul问题:如果我有a和b,如果它们都是32位双字(例如0-1=FFFFFFFF、FFFFFFFF+1=0),我如何计算x)?例如:0xcb9102df*x=0x4d243a5d在那种情况下,x是0x1908c643。我发现了一个类似的问题,但前提不同,我希望有一个比给出的解决方案更简单的解决方案。 最佳答案 数字具有模乘逆模2的幂,当且仅当它们是奇数。其他一切都是经过位移的奇数(即使是零,也可能是任何东西,所有位都被移出)。所以有几种情况:给定a*x=btzcnt(a)>tzcnt(b)无解