jjzjj

LargeNumber

全部标签

c++ - 大数求和

我在ProjectEuler网站上做一些问题,遇到了一个问题。问题是,“计算出以下一百个50位数字之和的前十位数字。”我猜想有一些数学方法可以解决这个问题,但我只是想知道这么大的数字是如何求和的?我将数字存储为字符串并将每个数字转换为长整数,但数字太大以至于求和不起作用。有没有办法将非常大的数字作为变量(不是字符串)保存?我不想要问题的代码,因为我想自己解决这个问题。 最佳答案 Iwasjustwonderinghownumbersthisbigaresummed?你可以使用数组:longLargeNumber[5]={,....}

c++ - 需要帮助在 C++ 中实现 Karatsuba 算法

先介绍一下背景:-我是第一次发布海报,是一名大学学生(不是编程专业)。-这不是作业题,我只是为了好玩才这样做。-我的编程经验包括一个学期(3个月)的C++和高中的一些QBasic。-是的,我查看了GMP和Bignum库;从原始代码中学习东西非常困难,尤其是在不了解程序员意图的情况下。此外,我想自己学习如何做。我正在为任意大的整数编写一个乘法函数。我使用字符数组来表示这些数字,末尾有一个+或-作为标记(例如“12345+”、“31415-”)。我目前正在实现Karatsuba算法。问题是使用递归和动态内存分配,该函数比原始方法慢5倍。我可以使用一些关于如何减少运行时间的提示。char*d

C++ 从 1 到一个非常大的数(例如 2500 万)的随机数

你会如何编写一个函数来生成1到2500万之间的随机数?我考虑过使用rand()但我认为最大数量RAND_MAX是=32000(大约)是否正确?有没有办法解决这个问题,既不降低选择极低数字的概率,也不增加选择高/中数字的概率?编辑:@JameyD的方法完全独立于Qt。 最佳答案 您可以(应该)使用新的C++11std::uniform_real_distribution#includestd::random_devicerd;std::mt19937gen(rd());std::uniform_real_distributiondis

c++ - C++中的无限循环

这个问题在这里已经有了答案:Infiniteloopwithcinwhentypingstringwhileanumberisexpected(4个答案)关闭3年前。我正在学习C++并在学习过程中编写小程序。下面是一个这样的程序://Thisprogramisintendedtotakeanyintegerandconverttothe//correspondingsignedchar.#includeintmain(){signedcharsch=0;intn=0;while(true){std::cin>>n;sch=n;std::cout"当我运行这个程序并将输入保持在相当小的绝

php - 如何在 PHP 中对 bcmath 数字进行舍入/上限/下限?

是否有用于此目的的任何库函数,所以我不会手动执行并冒以TDWTF结尾的风险?echoceil(31497230840470473074370324734723042.6);//Expectedresult31497230840470473074370324734723043//Prints 最佳答案 更新:在这里查看我改进的答案:Howtoceil,floorandroundbcmathnumbers?.这些功能似乎更有意义,至少对我而言:functionbcceil($number){if($number[0]!='-'){ret

c++ - 在 C++ 中,哪种数据类型用于非常大的数字?

我必须在我的程序中存储数字600851475143。我也尝试将其存储在longlongint变量和longdouble中,但在编译时显示错误integerconstantistoolargefor"long"type.我也尝试过unsignedlonglongint。我正在使用MinGW5.1.6在Windows上运行g++。我应该使用什么数据类型来存储数字? 最佳答案 longlong可以,但您必须在文字上使用后缀。longlongx=600851475143ll;//canuseLLinsteadifyouprefer.如果您将

JavaScript - 将 24 位十六进制数转换为十进制数,加 1,然后再转换回来?

对于MongoDB中的ObjectId,我使用24位十六进制数。因为我需要跟踪第二个集合,所以我需要将这个十六进制数加1。就我而言,这是我的值(value)varvalue="55a98f19b27585d81922ba0b"我要找的是varnewValue="55a98f19b25785d81922ba0c"我试图为此创建一个函数functionhexPlusOne(hex){varnum=(("0x"+hex)/1)+1;returnnum.toString(16);}这适用于较小的十六进制数hexPlusOne("eeefab")=>"eeefac"但是对于我的散列来说它惨遭失败

Python:怎么这么快?

random模块中使用的MersenneTwister的周期是(我被告知)2**19937-1。作为二进制数,即连续19937个“1”(如果我我没记错)。Python将其转换为十进制非常快:$python-mtimeit'2**19937'10000000loops,bestof3:0.0271usecperloop$python-mtimeit-s'result=0''result+=2**19937'100000loops,bestof3:2.09usecperloop我猜第二个版本是需要转换的那个?而且它不仅仅是二进制的。这也快。(我不显示数字,而是显示转换为字符串的小数长度):

python - 将大量数据存储到 numpy 数组中

我有一个数据集,我正在尝试对其应用一些算术方法。问题是它给了我相对较大的数字,当我用numpy这样做时,它们被存储为0。奇怪的是,当我计算数字appart时,它们有一个int值,当我使用numpy计算它们时它们只会变成零。x=np.array([18,30,31,31,15])10*150**x[0]/x[0]Out[1]:36298069767006890vector=10*150**x/xvectorOut[2]:array([0,0,0,0,0])我当然检查了他们的类型:type(10*150**x[0]/x[0])==type(vector[0])Out[3]:True我如何使

python - Python中的指数计算

在试验Euler99时,我注意到这些操作需要不同的时间:>>>632382**518061#neverfinishes..>>>632382**518061>519432**525806#finishesinfewsecondsTrue请问这是什么原因? 最佳答案 问题是python会尝试打印第一个结果。但是这个数字有无数个数字,python不会刷新输出,直到遇到换行符,这是在将所有数字发送到标准输出之后。正如@abarnert所提到的,更糟糕​​的是将数字转换为字符串以进行打印。这需要相当大的内存分配和处理能力。另一方面,第二个表