C ++での特定の再生率に対するn秒後のa、b、およびcのカウント
入力として3つの数値「a」、「b」、および「c」が与えられます。目標は、再現率が次のようになるように、n秒後の「a」、「b」、および「c」のカウント/値を見つけることです。-
- 2秒ごとにすべての変更がbに変更されます
- すべてのbは5秒ごとにcに変わります
- すべてのcは12秒ごとに2aに変わります。
例を挙げて理解しましょう。
例
入力- n_seconds =62 a =1 b =1 c =1
出力- 与えられた再生率のn秒後のカウントは次のとおりです:0
与えられた再生率に対するn秒後のbのカウントは次のとおりです:33
与えられた再生率に対するn秒後のcのカウントは次のとおりです:1
説明- 60秒後、aは32、b =0、c=0になります。
さらに2秒後、すべてのbはc、c=1になります。すべてaがbになり、b=33。
入力- n_seconds =20 a =1 b =1 c =1
出力- 与えられた再生率のn秒後のカウントは次のとおりです:0
与えられた再生率に対するn秒後のbのカウントは次のとおりです:0
与えられた再生率に対するn秒後のcのカウントは次のとおりです:6
説明
1秒:-a =1、b =1、c =1
2秒:-a =0、b =2(1 + 1)、c=1→2秒後にaからb
4秒:-a =0、b =2、c=1→2秒後にaからb
5秒:-a =0、b =0、c =3(1 + 2)→5秒後にbからc
6秒:-a =0、b =0、c=3→2秒後にaからb
8秒:-a =0、b =0、c=3→2秒後にaからb
10秒:-a =0、b =0、c=3→5秒後にbからc
12秒:-a =6(0 + 2 * 3)、b =0、c=0→12秒後にcから2a
14秒:-a =0、b =6(0 + 6)、c=0→2秒後にaからb
15秒:-a =0、b =0、c =6(0 + 6)→5秒後にbからc
16秒:-a =0、b =0、c=6→2秒後のaからb
18秒:-a =0、b =0、c=6→2秒後にaからb
20秒:-a =0、b =0、c=6→5秒後にbからc
以下のプログラムで使用されているアプローチは次のとおりです
秒のLCMは60(2、5、12)になります。したがって、60秒ごとのa、b、cの変化は次のようになります:
60秒→a=32、b =0、c =0
120秒→a=32 * 32、b =0、c =0
180秒→a=32 * 32 * 32、b =0、c=0。
60の倍数としての秒数については、上記のようにaを計算します。非倍数の場合は、最も近い複数の温度を計算してから、temp + 1から入力秒までトラバースし、mod 2、5、または12を使用して計算します。
- 数字a、b、cを入力として使用します。
- n_secondsを秒単位の時間とします。
- 関数replation_rate(int n_seconds、int a、int b、int c)は、すべてのパラメーターを受け取り、指定された再現率でn秒後のa、b、cのカウントを出力します。
- temp =n_seconds/60をn_seondsの下の60の倍数とします。
- 式で与えられるようにa=(int)pow(32、temp)を計算します。 ( temp )
- ここで、temp =60 * tempを更新します。これは、n_seconds以下の60の最も近い倍数です。
- ここで、forループを使用してi =temp+1からi=n_secondsまでトラバースします。
- 数値iが2の倍数である場合は、aとaに0を追加してbを更新します。
- 数値iが5の倍数である場合は、bとbに0を追加してcを更新します。
- 数値iが12の倍数である場合は、2cとcを0で追加してaを更新します。
- forループの最後に、a、b、cの最終値を出力します。
例
#include <bits/stdc++.h> using namespace std; void reproduction_rate(int n_seconds, int a, int b, int c) { int temp = n_seconds / 60; a = (int) pow(32, temp); temp = 60 * temp; for (int i = temp + 1; i <= n_seconds; i++) { if (i % 2 == 0) { b = b + a; a = 0; } if (i % 5 == 0) { c = c + b; b = 0; } if (i % 12 == 0) { a = a + (2 * c); c = 0; } } cout << "Count of a after n seconds for given reproduction rate is: " << a << "\n"; cout << "Count of b after n seconds for given reproduction rate is: " << b << "\n"; cout << "Count of c after n seconds for given reproduction rate is: " << c; } int main() { int n_seconds = 72; int a = 2; int b = 1; int c = 1; reproduction_rate(n_seconds, a, b, c); return 0; }
上記のコードを実行すると、次の出力が生成されます-
出力
Count of a after n seconds for given reproduction rate is: 68 Count of b after n seconds for given reproduction rate is: 0Count of c after n seconds for given reproduction rate is: 0
-
C++でN回カットした後の円のピースを数えます
2D円に適用されるカットの数を表す整数Nが与えられます。各円は、円を2つに分割します。目標は、Nカット後に円の断片を見つけることです。 個数=2*いいえ。カットの 例を挙げて理解しましょう。 入力 − n =1 出力 −円の断片:2 説明 − 入力 − n =3 出力 −円の断片:6 説明 − 以下のプログラムで使用されているアプローチは次のとおりです いくつかのカットにNを使用します。 ピースを取る=1*N。 結果を印刷します。 例 #include <bits/stdc++.h> using namespace st
-
C++でのT秒後のカエルの位置
n個の頂点で構成される無向ツリーが1つあるとします。頂点には1からnまでの番号が付けられています。これで、カエルは頂点1からジャンプを開始します。カエルは、現在の頂点から、訪問していない別の頂点に隣接している場合、1秒でジャンプできます。カエルは、訪れた頂点に戻ることはできません。カエルが複数の頂点にジャンプできる場合は、そのうちの1つにランダムにジャンプします 確率が同じ場合、それ以外の場合、カエルが訪問していない頂点にジャンプできない場合、同じ頂点で永久にジャンプします。 ツリーはエッジの配列として与えられます。 t秒後にカエルが頂点ターゲットにいる確率を見つける必要があります。 し