《动物世界》的剪刀石头布 HDU --- 6418
题目连接:
https://vjudge.net/problem/1812686/origin
emmm 这一题的资料来自《动物世界》这一个李易峰演的电影。。
主要的思路就是概率,但是会牵扯到博弈论这一个复杂的思路,如果继续深入就会越陷越深。。。
为什么不需要博弈的根本原因是它的总数的不变的,这个需要考虑到
A: a1, b1, c1
B: a2, b2, c2
(其中a, b, c分别对应剪刀,石头,布)
现在要B赢,并且题目提到了B知道A中手牌
所以 A要赢的最佳可能是(a'*(c-b)+b'*(a-c)+c'*(b-a)) / (a+b+c).
然后对这个进行模拟运算,这里涉及到一个求最大公约数的函数gcd(), 然后变号等情况考虑一下
AC代码为:
#include <iostream>
#include <cstdio>
#define ll long long using namespace std; ll gcd(ll a, ll b)
{
return a%b==?b:gcd(b, a%b);
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
ll ans = ;
bool flag = false;
ll a1, b1, c1;
ll a2, b2, c2;
scanf("%lld%lld%lld", &a1, &b1, &c1);
scanf("%lld%lld%lld", &a2, &b2, &c2);
ll fmu = a1+b1+c1;
ll fzi = a2*(c1-b1)+b2*(a1-c1)+c2*(b1-a1);
if(fmu == )
{
printf("%lld\n", fzi);
continue;
}
if(fzi < )
{
fzi = -fzi;
flag = true;
}
if(fzi == )
{
printf("0\n");
continue;
}
if(fzi%fmu == )
{
ans = fzi/fmu;
if(flag) printf("-%lld\n", ans);
else printf("%lld\n", ans);
}
else
{
ll mxyin = gcd(fmu, fzi);
fmu /= mxyin; fzi /= mxyin;
if(flag) printf("-%lld/%lld\n", fzi, fmu);
else printf("%lld/%lld\n", fzi, fmu);
}
}
return ;
}
《动物世界》的剪刀石头布 HDU --- 6418的更多相关文章
- 欢迎来到 ZooKeeper 动物世界
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费有趣.入门级的 ZooKeeper 开源教程,面向有编程基础的新手. Zo ...
- hdu 6418(石头剪刀布 **)
题意是说双方各有剪刀,石头和布的卡片各 a,b,c,a‘,b',c' 张,对方是随机选择,问我方的最大预期得分. 这道题目一开始看到的时候感觉没有头绪,再次读题,发现题目说结果可能是分数,如果是分数的 ...
- [设计模式] javascript 之 抽象工厂模式
抽象工厂模式说明 1. 工厂方法模式的问题: 在工厂方法模式里,创建类都需要通过 工厂类,如果要扩展程序,就必须修改工厂类,这违背了闭包原则,对扩展开放,对修改关闭:对于设计有一定的问题. 2. 如何 ...
- <老友记>学习笔记
这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...
- JavaScript设计模式与开发实践——JavaScript的多态
“多态”一词源于希腊文polymorphism,拆开来看是poly(复数)+ morph(形态)+ ism,从字面上我们可以理解为复数形态. 多态的实际含义是:同一操作作用于不同的对象上面,可以产生不 ...
- c语言中继承和多态的简单实现
C语言本身是不支持继承和多态的,但其实在 C 的世界里,有一套非常有名的面向对象的框架,用的也非常广,那就是 GObject,它是整个图形界面开发库 GTK 的基石,在IBM developerWor ...
- 【Java】java的内存浅析
一.闲谈下 201407月记着那时候身体垮了下来,呵呵.想说,对自己的说,也是对大家的负责吧.那时候胸疼胸闷,然后几乎累垮了,我还坚持了一星期,那一星期真的迷迷糊糊.完全不能看代码,看代码就晕.一直想 ...
- 使用dom4j 读取XML文件
第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...
- php工厂设计模式
class DbFactory { private $errmsg = '未找到类文件'; static function factory($className){ $className = strt ...
随机推荐
- cf1131f 构造+并查集
#include<bits/stdc++.h> using namespace std; #define maxn 150005 int f[maxn],n; vector<int& ...
- 20165314 Linux安装及学习
Linux的安装 安装虚拟机比我想象中要来的简单,虽然在这过程中出现了一些粗心大意导致的问题,但是重新再做一遍,问题就都解决了,比如: 未能加载虚拟光盘 在云班课的得到了同学的提示下我把虚拟机桌面的光 ...
- Java手动释放对象
伪代码 public void updateUser(BufferedWriter writer, BufferedReader reader) { List<User> array = ...
- MySQL 5.7的多源复制
MySQL 5.7已经开始支持了多源复制,相信小伙们都很激动,MySQL 5.7之前只能实现一主一从.一主多从或者多主多从的复制,如果想实现多主一从的复制,只好使用MariaDB,但是MariaDB又 ...
- PXE+HTTP+TFTP+Kickstart实现无人值守部署centos6.10
在联网的状态下安装所需软件: Shell> yum install dhcp httpd tftp-server xinetd syslinux system-config-kickstart ...
- CAS单点登录--转载
一:单点登录介绍 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相 ...
- 网络通信socket连接数上限
socket accept()返回的socket描述符的端口和listen描述符端口是一样的吗? as you know,一个socket是由一个五元组来唯一标示的,即(协议,server_ip, s ...
- VS2017使用文档
参考链接:https://docs.microsoft.com/zh-cn/visualstudio/debugger/?view=vs-2017
- lua和java防注入
lua样例 local sql = "SELECT * FROM t_base_person WHERE person_id=%s and bureau_id=%s" sql = ...
- win10 64 使用 visual studio 2017 搭建汇编开发环境
转自http://blog.csdn.net/sinat_27382047/article/details/70339455 插件 vs2015的汇编语法高亮插件(安装就行)这玩意找了我很久= = h ...