Advertisement
arsovski

dae

Oct 17th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. bool canDoubleToWin(int boardPoints,int pointsNeeded)
  4. {
  5. if (pointsNeeded <= 0)
  6. return false;
  7.  
  8. return (boardPoints * 2) == pointsNeeded;
  9. }
  10.  
  11. int doublePoints(int boardPoints)
  12. {
  13. return boardPoints * 2;
  14. }
  15.  
  16. int triplePoints(int boardPoints)
  17. {
  18. return boardPoints * 3;
  19. }
  20.  
  21. int main()
  22. {
  23. int pointsNeeded;
  24. std::cin >> pointsNeeded;
  25.  
  26. int boardPoints[] = { 0,1,2,3,4,5,6,7,8,9,10,
  27. 11,12,13,14,15,16,17,18,19,20 };
  28.  
  29. const int MIN_BOARD = 0;
  30. const int MAX_BOARD = 21;
  31.  
  32.  
  33. int possibleOuts = 0;
  34. for(int i=MIN_BOARD;i<MAX_BOARD;i++)
  35. {
  36.  
  37. if (canDoubleToWin(i, pointsNeeded))
  38. possibleOuts++;
  39.  
  40. int pointsAfterNormal = pointsNeeded - i;
  41. int pointsAfterDouble = pointsNeeded - doublePoints(i);
  42. int pointsAfterTriple = pointsNeeded - triplePoints(i);
  43. int pointsAfterInnerBull = pointsNeeded - 50;
  44. int pointsAfterOuterBull = pointsNeeded - 25;
  45.  
  46. for(int j=MIN_BOARD;j<MAX_BOARD;j++)
  47. {
  48. //Check if you can double by normal,double or triple
  49.  
  50. //Normal Double
  51. if (canDoubleToWin(doublePoints(j), pointsAfterNormal))
  52. possibleOuts++;
  53.  
  54. if (canDoubleToWin(doublePoints(j), pointsAfterDouble))
  55. possibleOuts++;
  56.  
  57. if (canDoubleToWin(doublePoints(j), pointsAfterTriple))
  58. possibleOuts++;
  59.  
  60. if (canDoubleToWin(doublePoints(j), pointsAfterInnerBull))
  61. possibleOuts++;
  62.  
  63. if (canDoubleToWin(doublePoints(j), pointsAfterOuterBull))
  64. possibleOuts++;
  65.  
  66. //After Normal Shot Possibilities
  67.  
  68. int pointsAfterNormalNormal = pointsAfterNormal - j;
  69. int pointsAfterNormalDouble = pointsAfterNormal - doublePoints(j);
  70. int pointsAfterNormalTriple = pointsAfterNormal - triplePoints(j);
  71.  
  72. int pointsAfterNormalInner = pointsAfterNormal - 50;
  73. int pointsAfterNormalOuter = pointsAfterNormal - 25;
  74.  
  75.  
  76. //After Double Shot Possibilities
  77.  
  78. int pointsAfterDoubleNormal = pointsAfterDouble - j;
  79. int pointsAfterDoubleDouble = pointsAfterDouble - doublePoints(j);
  80. int pointsAfterDoubleTriple = pointsAfterDouble - triplePoints(j);
  81.  
  82. int pointsAfterDoubleInner = pointsAfterDouble - 50;
  83. int pointsAfterDoubleOuter = pointsAfterDouble - 25;
  84.  
  85.  
  86. //After Triple Shot Possibilities
  87.  
  88. int pointsAfterTripleNormal = pointsAfterTriple - j;
  89. int pointsAfterTripleDouble = pointsAfterTriple - doublePoints(j);
  90. int pointsAfterTripleTriple = pointsAfterTriple - triplePoints(j);
  91.  
  92. int pointsAfterTripleInner = pointsAfterTriple - 50;
  93. int pointsAfterTripleOuter = pointsAfterTriple - 25;
  94.  
  95. //After InnerBullEye Shot Possibilities
  96.  
  97. int pointsAfterInnerBullNormal = pointsAfterInnerBull - j;
  98. int pointsAfterInnerBullDouble = pointsAfterInnerBull - doublePoints(j);
  99. int pointsAfterInnerBullTriple = pointsAfterInnerBull - triplePoints(j);
  100.  
  101. int pointsAfterInnerBullInner = pointsAfterInnerBull - 50;
  102. int pointsAfterInnerBullOuter = pointsAfterInnerBull - 25;
  103.  
  104.  
  105. //After OuterBullEye Shot Possibilities
  106.  
  107.  
  108. int pointsAfterOuterBullNormal = pointsAfterOuterBull - j;
  109. int pointsAfterOuterBullDouble = pointsAfterOuterBull - doublePoints(j);
  110. int pointsAfterOuterBullTriple = pointsAfterOuterBull - triplePoints(j);
  111.  
  112. int pointsAfterOuterBullOuter = pointsAfterOuterBull - 25;
  113. int pointsAfterOuterBullInner = pointsAfterOuterBull - 50;
  114.  
  115. for(int k=MIN_BOARD;k<MAX_BOARD;k++)
  116. {
  117. ////After Normal Shot Possibilities To Result
  118. if (canDoubleToWin(doublePoints(k), pointsAfterNormalInner))
  119. possibleOuts++;
  120.  
  121. if (canDoubleToWin(doublePoints(k), pointsAfterNormalOuter))
  122. possibleOuts++;
  123.  
  124. if (canDoubleToWin(doublePoints(k), pointsAfterNormalNormal))
  125. possibleOuts++;
  126.  
  127. if (canDoubleToWin(doublePoints(k), pointsAfterNormalDouble))
  128. possibleOuts++;
  129.  
  130. if (canDoubleToWin(doublePoints(k), pointsAfterNormalTriple))
  131. possibleOuts++;
  132. // last Double check for outs
  133.  
  134. //AfterDoubleShotPossibilities
  135.  
  136. if (canDoubleToWin(doublePoints(k), pointsAfterDoubleNormal))
  137. possibleOuts++;
  138.  
  139. if (canDoubleToWin(doublePoints(k), pointsAfterDoubleDouble))
  140. possibleOuts++;
  141.  
  142. if (canDoubleToWin(doublePoints(k), pointsAfterDoubleTriple))
  143. possibleOuts++;
  144.  
  145. if (canDoubleToWin(doublePoints(k), pointsAfterDoubleInner))
  146. possibleOuts++;
  147.  
  148. if (canDoubleToWin(doublePoints(k), pointsAfterDoubleOuter))
  149. possibleOuts++;
  150.  
  151. //After Triple Possibilities
  152.  
  153. if (canDoubleToWin(doublePoints(k), pointsAfterTripleNormal))
  154. possibleOuts++;
  155.  
  156. if (canDoubleToWin(doublePoints(k), pointsAfterTripleDouble))
  157. possibleOuts++;
  158.  
  159. if(canDoubleToWin(doublePoints(k), pointsAfterTripleTriple))
  160. possibleOuts++;
  161.  
  162. if (canDoubleToWin(doublePoints(k), pointsAfterTripleInner))
  163. possibleOuts++;
  164.  
  165. if (canDoubleToWin(doublePoints(k), pointsAfterTripleOuter))
  166. possibleOuts++;
  167.  
  168. //After 50 Possibilities
  169.  
  170. if (canDoubleToWin(doublePoints(k), pointsAfterInnerBullNormal))
  171. possibleOuts++;
  172.  
  173. if (canDoubleToWin(doublePoints(k), pointsAfterInnerBullDouble))
  174. possibleOuts++;
  175.  
  176. if (canDoubleToWin(doublePoints(k), pointsAfterInnerBullTriple))
  177. possibleOuts++;
  178.  
  179. if (canDoubleToWin(doublePoints(k), pointsAfterInnerBullOuter))
  180. possibleOuts++;
  181.  
  182. if (canDoubleToWin(doublePoints(k), pointsAfterInnerBullInner))
  183. possibleOuts++;
  184.  
  185. //After 25 Possibilities
  186.  
  187. if (canDoubleToWin(doublePoints(k), pointsAfterOuterBullNormal))
  188. possibleOuts++;
  189.  
  190. if (canDoubleToWin(doublePoints(k), pointsAfterOuterBullDouble))
  191. possibleOuts++;
  192.  
  193. if (canDoubleToWin(doublePoints(k), pointsAfterOuterBullTriple))
  194. possibleOuts++;
  195.  
  196. if (canDoubleToWin(doublePoints(k), pointsAfterOuterBullInner))
  197. possibleOuts++;
  198.  
  199. if (canDoubleToWin(doublePoints(k), pointsAfterOuterBullOuter))
  200. possibleOuts++;
  201. }
  202.  
  203. }
  204.  
  205. }
  206.  
  207. std::cout << possibleOuts << std::endl;
  208.  
  209. return 0;
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement