問題タブ [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 - 任意の大きさの整数で使用するデータ構造は何ですか?
純粋な興味から、私は任意の大きな整数を保持できる型を設計しようとしています。[+, -, *, /]
4つの基本的な操作をサポートし、それらの操作の速度を最適化したいと思います。
ある種の二重リンクリストと、正または負の値を示すビットフラグについて考えていました。しかし、たとえば、多数の異なるサイズに追加する方法がよくわかりません。両方の数値の最後の要素に移動してから戻ります(前の要素への2番目の逆ポインターを使用)。
任意の大きさのメモリを使用できるとすると、このタスクに最適なデータ構造は何ですか?
算術演算の最悪の場合の複雑さについての小さなヒントとコメントをいただければ幸いです。ありがとう!
java - Find factorial of large numbers in Java
I tried to find the factorial of a large number e.g. 8785856 in a typical way using for-loop and double data type.
But it is displaying infinity as the result, may be because it is exceeding its limit.
So please guide me the way to find the factorial of a very large number.
My code:
Output:-
I am new to Java but have learned some concepts of IO-handling and all.
python - 二項係数のモジュロ素数を見つける、インタビューストリートチャレンジ
私はこれについて多くの作業を行いましたが、より大きなテストケースの答えを見つけることができませんでした
問題文
数学では、二項係数は、二項定理の係数として発生する正の整数のファミリーです。C(n、k)は、n個の異なるオブジェクトからk個のオブジェクトを選択する方法の数を示します。
ただし、nとkが大きすぎる場合は、素数Pによるモジュロ演算後にそれらを保存することがよくあります。Pによるモジュロ後にnの二項係数が0になる数を計算してください。
入力
最初の入力は、テストケースの数である整数Tです。
次の各T行には、nと素数Pの2つの整数が含まれています。
出力
各テストケースについて、出力行には\ 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 つの 2 進数を生成し、それらをすべて 500 回追加します。これは非常に遅いです。
random.random() を 1 回呼び出して、それを巨大な数で乗算します。一度バイナリに変換すれば完了です。これは小さい数値に対しては機能しますが、バイナリ文字列は特定の長さでなければならないため、バイナリに変換する数値は非常に大きくなければなりません (2 ** len(binString))。
現在のコード (小さい数字で機能します):
修正の助けが必要なエラー:この呼び出しは、大きな数値で「long int too large to convert to float」をスローします。アルゴリズム全体をより効率的にする方法や、この大きな数を float に変換できるようにする方法はありますか?
ありがとうございました!
c++ - コーディング競技会: 大量の数値を保存し、そのすべての結合モジュラス P を見つける方法
私は競争力のあるプログラミングを始めましたが、ほとんどの場合、数値の入力サイズは次のようになります
したがって、単純なintメモリに格納できない500桁のようなものになることを理解しています。私は c と c++ を知っています。
配列を使用する必要があると思います。しかし、どうやって見つけるのか混乱します
それを配列に格納してからnCrを見つけると思います。これには、数字の乗算と除算をコーディングする必要がありますが、モジュラスはどうですか。
他に方法はありますか?
ありがとう。
c# - 多くのユーザーと単一の SQL データベースを含む Windows アプリケーション
私は、2000 年頃に多くのユーザーが使用している Windows アプリケーションを作成しています。私は、このような大量のデータベース アクセス プロジェクトに比較的慣れていません。複数のユーザーが同時にデータベースにアクセスする可能性があります。ソリューションを開発する際に考慮する必要があるさまざまな手順を説明してください。
ありがとう、
アニッシュ
c++ - 多数を格納するためのデータ型
私はいくつかの番号を保存する必要があるプログラムを持っています。最大のものは10^15のオーダーにすることができます。番号を保存するにはどうすればよいですか。
Gcc4.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)だけで非常に大きな数値を入力できますか?
非常に大きな 2 つの数値を計算 (合計) したいのですScanner
が、メソッドを使用すると、IOException
非常に大きな数値を入力した場合がありました。いくつかのルールがあります。
- 使えない
BigInterger
- 純粋にしか使えません
integer
。 - 使えます
InputStream
。
解決策を教えてください。
c++ - scipy.weave.inline を使用して Python から C/C++ に大きな整数を渡す
Python で記述したコードの一部は、C で高速に実行できることがわかりました。これには scipy.weave.inline を使用しました。C コードに渡す必要のある整数の 1 つである seek_pos は、(時々) 32 ビット長で表現できるものよりも大きくなりました。seek_pos を計算して正しい値 (おそらく 23 億) を取得できますが、それを fseek や fseeko64 のオフセットとして使用するなど、他のことを行うと、-19 億 (または任意の値) であるかのように動作します。 d は、正の long int の範囲を超えて、負の long int に回り込むことから取得します)。
私の回避策は、Python y=seek_pos/N, x=seek_pos%N で大きな整数を分解し、それらの小さい数値を渡し、C で大きい数値を再構築することでした、seek_pos_off = Y*N+X. 私は Weave と C/C++ の両方に不慣れです。私のコードは今では動作しますが、これはかなりばかげた方法だと思います。weave.inline の既製の型コンバーターを指定するか、カスタムの型コンバーターを作成することもできたかもしれませんが、どうすればよいでしょうか。これは私には明確ではありませんでした。
誰かがこれを行うためのより良い方法を提案できるなら、私はそれを感謝しますが、そうでない場合でも、同じ問題を扱っている誰かが検索時に少なくとも私の仕事を見つけることができるように、とにかくこれを投稿したかった.
ここに私のコードの関連部分があります