经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
【CodeForces】9A-Die Roll
来源:cnblogs  作者:一只背影  时间:2018/12/5 9:30:09  对本文有异议

目录

Question

三个人掷骰子,前两个人的得分分别是Y和W,问第三个人胜利的概率(第三个人得分不小于Y、W)?结果输出格式为\(A/B\),如果概率为0则输出\(0/1\),如果概率为1则输出\(1/1\)

Solution

解法1

通过公式\(p= \frac{6-max(Y,W) +1}{6}\)得到概率,然后将概率转换成要求的输出格式(化简)。因为化简比较费劲,而这里的结果是有限的,所以可以直接输出概率。

  1. # Python
  2. print(['1/1', '5/6', '2/3', '1/2', '1/3', '1/6'][max(map(int, input().split()))-1])
  1. // C++
  2. include <iostream>
  3. using namespace std;
  4. int main() {
  5. int y,w;
  6. string p[6]={"1/6", "1/3", "1/2", "2/3", "5/6", "1/1"};
  7. cin>>y>>w;
  8. cout<<p[6-max(y,w)];
  9. return 0;
  10. }

解法2

得到结果后,进行化简。通过辗转相除法求分子分母的最大公约数。

  1. // C++
  2. include <iostream>
  3. using namespace std;
  4. int gcd(int a, int b) { // 求最大公约数
  5. if (b == 0)
  6. return a;
  7. return gcd(b, a % b);
  8. }
  9. int main() {
  10. int a, b;
  11. cin >> a >> b;
  12. int e = 6 - max(a, b) + 1;
  13. int g = gcd(e, 6);
  14. cout << e / g << '/' << 6 / g << endl;
  15. return 0;
  16. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号