C++ program to count how many ways two players win or make draw in dice throwing game


Suppose we have two numbers a and b. Amal and Bimal are playing a game. First each of them writes an integer from 1 to 6, then a dice is thrown. The player whose written number got closer to the number written on the paper, he wins that round, if both of them has the same difference, then that is a draw. If Amal writes the number a, and Bimal writes b, then we have to count the number of possible ways the Amal will win, number of possible draw and number of ways Bimal can win.

So, if the input is like a = 2; b = 4, then the output will be [2, 1, 3] so Amal can win in 2 possible ways. If the dice shows 3, there is a draw.

Steps

To solve this, we will follow these steps −

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

Example

Let us see the following implementation to get better understanding −

#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);
}

Input

2, 4

Output

2, 1, 3

Updated on: 03-Mar-2022

149 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements