问题标签 [largenumber]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 使用什么数据结构来处理任意大的整数?
出于纯粹的兴趣,我正在尝试设计一种可以容纳任意大整数的类型。我想支持四种基本操作[+, -, *, /]
并优化这些操作的速度。
我在考虑某种双向链表和一个位标志来指示正值或负值。但我不太确定如何添加,例如,添加到大量不同尺寸。我是否应该走到两个数字的最后一个元素,然后返回(使用第二个反向指针指向前一个元素)。
如果我可以拥有任意大的内存,那么这个任务的最佳数据结构是什么?
对于算术运算的最坏情况复杂性,我将不胜感激。谢谢!
java - 在Java中查找大数的阶乘
我尝试使用 for 循环和双精度数据类型以典型方式找到大量的阶乘,例如 8785856。
但结果显示无穷大,可能是因为它超出了它的极限。
所以请指导我找到一个非常大的阶乘的方法。
我的代码:
输出:-
我是 Java 新手,但已经学习了一些 IO 处理等概念。
python - 寻找二项式系数模素数,面试街头挑战
我在这方面做了很多工作,但找不到更大的测试用例的答案
问题陈述
在数学中,二项式系数是一系列正整数,在二项式定理中作为系数出现。C(n,k) 表示从 n 个不同对象中选择 k 个对象的方法的数量。
但是当n和k太大的时候,我们经常在对一个素数P进行模运算后保存。请计算n有多少个二项式系数在对P进行模运算后变为0。
输入
第一个输入是一个整数 T ,即测试用例的数量。
以下 T 行中的每一行都包含 2 个整数,n 和素数 P。
输出
对于每个测试用例,输出一行包含 \tbinom nks (0<=k<=n) 的数量,每个在 P 的模运算后为 0。
样本输入
样本输出
约束:
- T 小于 100
- n 小于 10^500。
- P 小于 10^9。
尝试的解决方案
我通过在二项式系数中使用余数定理完成了这个
小数满足上述条件
样本测试用例
n=18794630773460178101742670493883191390743597826923079533199667903991430393463990462500322752062869664969026409174076912867222446746310051635510258172105034070506806228555577773599018819952185016092141574603857551738968553782672643049704163674318579695215402562964641111900657274032612661770435202254364177910753450214277150377049334509093906874400306682949871260040370515062243982543271073443613028133844603853807066311479739789908983610180228625059956919930500586048799830730348503994503184106117058
p= 177080341
我的输出是
2296508200406431043037217853758906667313789305876262916681342008001095232916608835588093082038358975456171743147798282523487485386336553910277635713985851142371010771392102277877640275384064735398164190968282400640398659343189330639672472613876688344609533340662724884373078840434716174167873375700938597411315754265893890741730938202927739246687866166994143001482839656000969674716959277820008958538229366474207686428750934149471409162993083541475267772950721250234982686128039722553219836725588488
预期输出是
18794630773460178101742635959946548665553041135822283621364103266511586625905046107130878283695016799933475657268010472422112556606280021574002866456544310584537519228161286450725015989697306855581489155139723025246780552510467580791551824827637581156204185887378181074365453150481221030356075255000460025095384537510111086396988416046942446776262625161326885418101128327416784858513888616089287333560469336094431461981368825028447505354473183546488856594449627370807707483671453574074503184106117059
python - 将大量数字乘以 random() (Python)
问题:生成大型二进制字符串(长度 2000+)。快点做,因为这个 generateRandom() 函数将在算法中被调用 300,000 次。
尝试的解决方案:生成 3 或 4 个二进制数并将它们全部附加 500 次。这非常慢。
对 random.random() 进行一次调用并将其乘以一个巨大的数字。转换为二进制一次即可完成。这适用于较小的数字,但由于二进制字符串必须具有一定的长度,因此要转换为二进制的数字必须非常大(2 ** len(binString))。
当前代码(适用于较小的数字):
我需要帮助修复的错误:此调用会抛出带有大数字的“long int too large to convert to float”。有没有办法让整个算法更高效,或者让这个大数字可以转换为浮点数?
谢谢!
c++ - 编码竞赛:如何存储大数并求其所有组合模数 P
我已经开始做有竞争力的编程,大多数时候我发现数字的输入大小就像
所以我知道这就像 500 位数字,不能存储在简单的 int 内存中。我知道c和c++。
我想我应该使用一个数组。但后来我对如何找到
我认为我会将它存储在一个数组中,然后找到 nCr。这需要对数字进行乘法和除法编码,但是模数呢。
还有其他方法吗?
谢谢。
c# - 具有多个用户和单个 SQL 数据库的 Windows 应用程序
我正在创建一个 Windows 应用程序,许多用户说它在 2000 年左右被使用。我对这类大容量数据库访问项目比较陌生。有多个用户同时访问数据库的可能性。您能否通过解释我在开发解决方案时需要考虑的各个步骤来指导我?
谢谢,
阿尼什
c++ - 用于存储大数的数据类型
我有一个程序需要存储几个数字。最大的可以是 10^15 的数量级。我应该如何存储号码。
我正在使用 Gcc 4.3.2 编译器。
c++ - C++ 大数运算
我正在开发一个用于大数算术的类,它现在知道如何进行加法、处理 cin 和 cout。
但是,它具有非常有限和基本的减法功能,并且不知道如何处理负数。但这很容易解决。
我的问题是,如何进行乘法运算。
我将在这里详细说明它是如何处理 cin 和 cout 的。
对于cin,它将整数保存到value[500],例如50将保存到value[498]和value[499]。但不是 value[0] 和 value[1]
对于 cout,它将从 value[0] 到 value[499] 扫描第一个非零值,然后从该非零值输出到末尾。此外,如果它没有找到非零值,它将输出 0。
这是我的代码:
我已经包含了我的乘法方法,但是它有缺陷。
顺便说一句,老师给出的数字承诺乘法的结果将是一个小于500位的数字。
java - 我可以只用整数变量(java)输入非常大的数字吗?
我想用非常大的两个数字计算(总和)但是当我使用Scanner
方法时,IOException
当我输入非常大的数字时。有一些规则。
- 我无法使用
BigInterger
- 我只能纯粹使用
integer
. - 我可以使用
InputStream
.
请给我解决方案。
c++ - 使用 scipy.weave.inline 将大整数从 Python 传递到 C/C++
我发现我用 python 编写的一部分代码可以在 C 中更快地完成。我使用 scipy.weave.inline 来做到这一点。seek_pos 是我需要传递到我的 C 代码中的整数之一,它(有时)大于 32 位长度可以表示的整数。我可以计算 seek_pos 并获得正确的值(可能是 23 亿),但是当用它做其他事情时,例如将它用作 fseek 或 fseeko64 中的偏移量,它会表现得好像它是 -19 亿(或任何值你' d 从绕过正长整数的范围并绕到负长整数的范围内)。
我的解决方法是在 python y=seek_pos/N,x=seek_pos%N 中分解大整数,传入这些较小的数字并在 C 中重建较大的数字,seek_pos_off = Y*N+X。我是 Weave 和 C/C++ 的新手。我的代码现在可以工作,但我认为这是一种非常荒谬的到达方式。也许我可以为 weave.inline 指定一个预制或自定义类型转换器,但是如何我不清楚这样做。
如果有人可以提出更好的方法,我将不胜感激,但如果没有,我还是想发布这个,以便处理相同问题的人至少可以在搜索时找到我的工作。
这是我的代码的相关部分