存储为字符串的大量100位数的划分

时间:2014-07-04 18:41:46

标签: c++ string bignum

我有一个100位数字存储为字符串。我想将此数字除以小于10的整数。如何有效地将存储为字符串的大整数除以整数?

3 个答案:

答案 0 :(得分:5)

您可以查看big integer library

您可以在C ++程序中使用此库对仅由计算机内存限制的大小进行算术运算。该库提供了分别代表非负整数和有符号整数的BigUnsigned和BigInteger类。大多数C ++算术运算符都为这些类重载,因此大整数计算就像以下一样简单:

#include "BigIntegerLibrary.hh"

BigInteger a = 65536;
cout << (a * a * a * a * a * a * a * a);

(prints 340282366920938463463374607431768211456)

同时检查GMP

答案 1 :(得分:3)

@WasimThabraze - 您对长手分割方法的理解是什么?由于除数小于整数的1/2,你可以对每个除法使用类似的东西:

char array[10] = {9,8,7,6,5,4,3,2,1,0};

void divide(int dvsr)
{
int rem = 0;
int dvnd;
int quot;
int i;
    for(i = 0; i < (sizeof(array)/sizeof(array[0])) ; i++){
        dvnd = (rem * 10) + array[i];
        rem = dvnd % dvsr;
        quot = dvnd / dvsr;
        array[i] = quot;
    }
}

int main(void)
{
    divide(8);
    return (0);
}

答案 2 :(得分:0)

我希望这会对你有所帮助,因为并非所有在线评委都允许BigIntegerLibrary。我已经假设了一些任意的输入。

add_executable(${TEST_EXE_NAME} t1.cc t2.cc)