【发布时间】:2014-02-17 20:22:10
【问题描述】:
我现在正在自学 Pascal 一个月,但我遇到了一个我似乎无法解决的问题。基本上我有 2 个数字,N 和 M,其中 N 小于 10100 000 和 M 小于 108 且都大于 0。我需要计算 N mod M。
我不知道该怎么做,即使是QWord。我用string 试过了,但我不知道有什么好方法。它总是对我来说太复杂了,因为我使用 for 函数,我从字符串 N 和字符串 M 中获取最后一个数字,然后我用两个 @ 减去它们987654325@ 函数(其中 N 的最后一位高于或与 M 的最后一位相同,如果低于)。基本上,我认为这个简单的问题太复杂了。
【问题讨论】:
-
对于字符串,我必须做很多从字符串到整数的转换,然后是整数到字符串或字符等的转换......
-
"... N 小于 10^8"?你的意思是“……而且 M 小于 10^8”?
-
@MikeW 你是什么意思没有办法轻易做到这一点?我看不出宇宙的信息容量与进行 bignum 计算有什么关系。
-
这是我国帕斯卡较老的比赛之一的问题,他们还没有发布解决方案。它真的让我很感兴趣如何解决它,顺便说一句,我知道 googol、googolplex、googolplexian 等,但我认为这与物理学没有任何联系:) 是的,这个数字是 10^100 000,即 1 后跟100 000 个零。猜猜看,这个问题的时间限制是 0.1 秒