2人のプレーヤーがサイコロを投げるゲームで勝つか引き分けをする方法を数えるC++プログラム
aとbの2つの数があるとします。アマルとビマルはゲームをしています。最初にそれぞれが1から6までの整数を書き込み、次にサイコロが投げられます。書かれた数字が紙に書かれた数字に近づいたプレーヤーは、そのラウンドに勝ちます。両方の差が同じであれば、それは引き分けです。 Amalが数字aを書き込み、Bimalがbを書き込む場合、Amalが勝つ可能性のある方法の数、可能な引き分けの数、およびBimalが勝つことができる方法の数を数える必要があります。
したがって、入力がa=2のような場合。 b =4の場合、出力は[2、1、3]になるため、Amalは2つの方法で勝つことができます。サイコロが3を示している場合、引き分けがあります。
ステップ
これを解決するには、次の手順に従います-
s1 := 0 s2 := 0 s3 := 0 if (a + b) mod 2 is same as 0, then: s2 := 1 if a is same as b, then: s2 := 6 otherwise when a > b, then: s1 := 6 - ((a + b) / 2) Otherwise s1 := (a + b - s2 - 1) / 2 s3 := 6 - s1 - s2 print s1, s2 and s3
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; void solve(int a, int b) { int s1 = 0, s2 = 0, s3 = 0; if ((a + b) % 2 == 0) s2 = 1; if (a == b) s2 = 6; else if (a > b) s1 = 6 - ((a + b) / 2); else s1 = (a + b - s2 - 1) / 2; s3 = 6 - s1 - s2; cout << s1 << ", " << s2 << ", " << s3 << endl; } int main() { int a = 2; int b = 4; solve(a, b); }
入力
2, 4
出力
2, 1, 3
-
サイズdで作成できる十二角形の数をカウントするC++プログラム
数dがあるとします。正方形のタイルと辺の長さが1の通常の三角形のタイルが無数にあると考えてください。これらのタイルを使用して、側面dの通常の十二角形(12辺の多角形)を形成できる方法をいくつ見つける必要があります。答えが大きすぎる場合は、結果mod998244353を返します。 ステップ これを解決するために、次の手順に従います- b := floor of d/2 - 1 c := 1 for initialize i := 2, when i < d, update (increase i by 1), do: b := b * (floor of
-
Pythonでツリーを2つのツリーに分割できる方法の数を数えるプログラム
値0、1、および2を含む二分木があるとします。ルートには少なくとも1つの0ノードと1つの1ノードがあります。ここで、ツリーのエッジを削除し、ツリーが2つの異なるツリーになる操作があるとします。 2つのツリーのいずれにも0ノードと1ノードの両方が含まれないように、1つのエッジを削除できる方法の数を見つける必要があります。 したがって、入力が次のような場合 0から2のエッジしか削除できないため、出力は1になります。 これを解決するには、次の手順に従います- count:=[0、0、0] 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 pre:=