C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

  1. サイズ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

  2. Pythonでツリーを2つのツリーに分割できる方法の数を数えるプログラム

    値0、1、および2を含む二分木があるとします。ルートには少なくとも1つの0ノードと1つの1ノードがあります。ここで、ツリーのエッジを削除し、ツリーが2つの異なるツリーになる操作があるとします。 2つのツリーのいずれにも0ノードと1ノードの両方が含まれないように、1つのエッジを削除できる方法の数を見つける必要があります。 したがって、入力が次のような場合 0から2のエッジしか削除できないため、出力は1になります。 これを解決するには、次の手順に従います- count:=[0、0、0] 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 pre:=