我有一个关于C++中取模的问题。我想要做的是将一个非常大的数字进行除法运算,例如 M % 2,其中M = 54,302,495,302,423。然而,当我尝试编译时,它显示该数字对于int类型来说太“长”了。当我将其转换为double类型时,它重复了相同的错误消息。是否有一种方法可以让我得到这个非常大的数字或者可能更大的数字的余数?谢谢你的帮助,非常感激。
提示:使用链表。将数字作为一组数字动态存储。例如:
112233445566778899001122 => 11223344 55667788 99001122
现在考虑单个单位并从左到右开始。找到余数并操纵它以添加到下一组并继续进行。
现在实现非常容易 :)
编辑:
112233445566778899001122/6 => 11223344 55667788 99001122/6
11223344/6 =>2
2*100000000 + 55667788 = 255667788
255667788/6 => 0
0*100000000 + 99001122 = 99001122
99001122/6=>0
So the reminder is 0.
记住,操作后的单个单位应该在int能支持的最大范围内。
整数的范围只能从-2,147,483,648到2,147,483,647。请查看http://msdn.microsoft.com/en-us/library/s3f49ktz(VS.71).aspx以获取数据类型范围。我建议使用long long。