《动物世界》的剪刀石头布 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 ...
随机推荐
- php实现备份数据库
public function dataBackup(){ $doc_root=$_SERVER['DOCUMENT_ROOT']; $file_path_name=$doc_root.'/sqlba ...
- 关于如何在Listener中注入service和ServletContextListener源码分析
今天在做项目时突然发现我该如何向listener中注入service对象,因为监听器无法使用注解注入. 此时有人会想用以下代码通过xml的方式注入: ApplicationContext cont ...
- HTMLTestRunner 美化版本
前言 最近小伙伴们在学玩python,,看着那HTMLTestRunner生成的测试报告,左右看不顺眼,终觉得太丑.搜索了一圈没有找到合适的美化报告,于是忍不住自已动手进行了修改,因习惯python ...
- python压缩文件
#coding=utf-8 #压缩文件 import os,os.path import zipfile #压缩:传路径,文件名 def zip_compression(dirname,zipfile ...
- python 装饰器--对有无参数的函数进行装饰
# 使用装饰器无参数的函数进行装饰# def func(funcionName): # print('-----1------') # def func_in(): # print('--func_i ...
- vs无法启动程序,操作在当前状态中是非法的
问题的图片: 解决方案: 工具--选项--调试--常规--启用asp.net的JavaScript调试(chrome和ie)去掉勾选
- [转] git rm与git rm --cached
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用 git rm file_path 当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制 ...
- Linux 下压缩与解压.zip和.rar
)对于.zip linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序.它们的参数选项很多,可用命令zip -help和unzip -help查看,这里只做简单介绍,举例说明 ...
- php处理IOS图片旋转
$picAddr = $url; $exif = exif_read_data($picAddr); $image = imagecreatefromjpeg($picAddr); if($exif[ ...
- [SDOI2018]荣誉称号
题解: 并不需要什么算法 首先我们随便画一画就会发现 能画出一颗满二叉树 然后要满足每个点从上往下的路径和都相同(%m意义下) 一个点上可能对应了多个点 然后这样我们可以暴力dp $2^k*m^2+n ...