投げるたびにボールを受け取る子供を数えるC++コード
数nがあるとします。輪になって立っている子供はほとんどいません。それらは1からnまで番号が付けられ、時計回りの順序であり、子番号1がボールを保持しています。最初に子番号1がボールを時計回りに次の子に投げ、次に子番号2が次の1人の子に(子番号4に)ボールを投げ、次に4番目の子が子番号7にボールを投げます。すぐ。ボールが投げられるとき、それは円の始まりを通過するかもしれません。ゲーム中にすべての子供がボールを受け取るわけではありません。子供がボールを受け取らない場合は、投げるたびにボールを受け取る子供の数を見つける必要があります。
したがって、入力がn =10の場合、出力は[2、4、7、1、6、2、9、7、6]になります。
ステップ
これを解決するには、次の手順に従います-
p := 1 for initialize i := 1, when i < n, update (increase i by 1), do: p := p + i p := p mod n if not p is non-zero, then: p := n print p
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; void solve(int n){ int p = 1; for (int i = 1; i < n; i++){ p += i; p %= n; if (!p) p = n; printf("%d, ", p); } } int main(){ int n = 10; solve(n); }
入力
10
出力
2, 4, 7, 1, 6, 2, 9, 7, 6,
-
C++でN回カットした後の円のピースを数えます
2D円に適用されるカットの数を表す整数Nが与えられます。各円は、円を2つに分割します。目標は、Nカット後に円の断片を見つけることです。 個数=2*いいえ。カットの 例を挙げて理解しましょう。 入力 − n =1 出力 −円の断片:2 説明 − 入力 − n =3 出力 −円の断片:6 説明 − 以下のプログラムで使用されているアプローチは次のとおりです いくつかのカットにNを使用します。 ピースを取る=1*N。 結果を印刷します。 例 #include <bits/stdc++.h> using namespace st
-
C ++で数値を除算する際に、小数点以下の桁数をカウントします
2つの整数、たとえばnum1とnum2が与えられます。タスクは、num1をnum2で除算し、これらの指定された数値を除算して小数点以下の桁数を計算することです。 例 Input − num1 = 2, num2 = 5 Output − count is 1 説明 − 2を5で割ったとき、つまり? =0.4であるため、小数点以下の桁数は1であるため、カウントは1です。 Input − num1 = 2, num2 = 0 Output − Floating point exception (core dumped) 説明 −任意の数値を0で割