我们将实现任意大整数的除法。
这是代码高尔夫球。
任务是编写实现任意精度整数和除法的程序或函数。
请注意,不允许使用许多可能会很容易做到的事情,请确保通读规范。
输入值
您将获得两件事作为输入:
- 一串以10为基数的数字,将其称为
n
。 - 另一个以10为基数的字符串,称为
m
假设这n>m>0
意味着您将永远不会被零除。
输出量
您会输出两个数字,Q
和R
其中M * Q + R =正和0 <= R <米
技术指标
您的提交应适用于任意大整数(受可用内存限制)。
您可能不使用外部库。如果需要用于I / O的外部库,则可以将其视为内置库。(查看iostream之类的内容)。
如果您的语言有一个内置的功能可以解决这个问题,则您可能无法使用它。这包括(但不限于)可以处理任意精度整数的内置类型。
如果某种语言由于某种原因默认情况下使用任意精度整数,则此功能不能用于表示通常无法以64位存储的整数。
输入和输出必须以10为底。不管如何将数字存储在内存中或如何对它们进行算术运算,但I / O将以10为底。
您有15秒的时间来输出结果。这是为了禁止迭代减法。
这里的目标是实际实现任意精度的整数。如果您出于某种原因能够遵守挑战规范,并且在没有实施挑战规范的情况下成功做到这一点,那么我想对您有好处,听起来很有效。
测试用例
- 在这种情况下,输入为39!还有30个!
输入值
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
输出量
Q = 76899763100160
R = 0
n
是最多50个阶乘的和的总和,再加上1。m
最大是20的级联数。
输入
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
输出
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
n
是205!+ 200!。m
PeterTaylor通过撕碎我在沙箱中张贴的东西使我流了多少眼泪。
输入值
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
输出量
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
我可能会在某个时候添加更多的测试用例。