《动物世界》的剪刀石头布 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 ...
随机推荐
- OrCAD Capture CIS 为库里的元器件添加新属性
1.进入元器件编辑界面 2.菜单:Options > Part Properties... 3.在窗口User Properties中,点击按钮New... 4.在弹出的子窗口NewProper ...
- ORA-12519 ORA-12516
目录: 错误信息 原因分析 解决方法 1. 错误信息 [oracle@test1 admin]$ oerr ora , , "TNS:no appropriate service handl ...
- Android SQLite用法
1.创建SQLite数据库 需要自己创建一个类来继承SQLiteOpenHelper类 SQLiteOpenHelper类是一个创建SQLite数据库的辅助类 继承此类的时候需要重写三个方法 publ ...
- 异常:Keyword not supported: 'data source'的解决办法
将连接字符串中的"换为“'”,一个单引号即可. 详细解释:https://blogs.msdn.microsoft.com/rickandy/2008/12/09/explicit-c ...
- 提高VS项目的压缩文件大小
对于.NET项目,如果将编译方式由Debug改为Release,使用压缩软件压缩项目文件时可以大大减少压缩文件的大小,具体原因待查.
- Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
1:什么是Spark的RDD??? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行 ...
- AndroidStudio在线搜索最新版本的依赖库
操作步骤 打开File–>Project Structure 选中当前项目,点击Denpendencies标签 点击+,选Library dependency 打开界面如下: 输入想要的依赖库部 ...
- element-ui MessageBox的bug
通过 use引用messageBox有bug Vue.use(MessageBox) 页面一开始会有一个弹窗,内容空白 Vue.component(MessageBox.name, MessageBo ...
- C++ 语法--变量和常量
起步 Hello world! #include <iostream> int main() { std::cout<<"Hello, world!"; ; ...
- loadrunner场景报错:Error: CCI compilation error -/tmp/brr_5d65oV/netdir/E/\320\324/Action.c (318): undeclared identifier `LAST'解决思路
在windows下写的脚本编译通过 但是拿到linux agent场景执行中就会提示如下,同样的脚本在windows agent下没有任何问题 agent连的是linux负载机 通过脚本一行一行排查, ...