C++で1/nの10進値で期間の長さを検索します
数nがあるとします。期間の長さを1/nの10進値で見つける必要があります。したがって、nの値が7の場合、1/7=0です。142857 142857…太字のその部分が繰り返されています。したがって、ここでの期間の長さは6です。
数値nの場合、出力にn個の異なる剰余が存在する可能性がありますが、一部の初期剰余は繰り返されないため、期間は最初の剰余から開始されない場合があります。したがって、期間の剰余が選択されていることを確認し、(n + 1)番目の剰余から開始して、次の出現を探し始める必要があります。 (n + 1)番目の剰余と次の出現の間の距離は、期間の長さです。
例
#include<iostream> using namespace std; int periodLength(int n) { int remainder = 1; int length = 0; for (int i = 1; i <= n+1; i++) remainder = (10*remainder) % n; int d = remainder; do { remainder = (10*remainder) % n; length++; } while(remainder != d); return length; } int main() { int n = 7; cout << "Period length of 1/"<<n<<" is: " << periodLength(n) << endl; }
出力
Period length of 1/7 is: 6
-
C++のリンクリストでループの長さを見つける
この問題では、ループを含む可能性のあるリンクリストが表示されます。私たちのタスクは、リンクリストでループの長さを見つけることです。 問題の説明: ループが含まれている場合はループ内のノード数をカウントする必要があります。それ以外の場合は-1を返します。 問題を理解するために例を見てみましょう。 入力: リンクリスト: 出力: 8 ソリューションアプローチ この問題を解決するには、まずリンクリストにループが含まれているかどうかを確認する必要があります。これを確認するためのアプローチは、フロイドの循環検出アルゴリズムを使用することです。 フロイドの循環検出アルゴリズム
-
C++で左下のツリー値を検索
二分木があるとします。そのツリーの最後の行の左端の値を見つける必要があります。したがって、ツリーが次のような場合- 最後の行が[7、4]であり、左端の要素が7であるため、出力は7になります。 これを解決するには、次の手順に従います- 最初にansとlvl変数を0として定義します solve()と呼ばれる1つのメソッドを定義します。これはツリーノードを取り、レベルは最初は0です。これは次のように機能します- ノードがnullの場合は、を返します。 lvlの場合、ans:=ノードの値およびlvl:=level 解決(ノードの左側、レベル+ 1)