我有一个100位数字存储为字符串。我想将此数字除以小于10的整数。如何有效地将存储为字符串的大整数除以整数?
答案 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)