#1177 : 顺子

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://hihocoder.com/problemset/problem/1177

Description

你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少?

假定赌场使用的是一副牌,四种花色的A、2、3、...、J、Q、K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张。

顺 子指的是点数连续的五张牌,包括10、J、Q、K、A这种牌型(不包含同花顺,即构成顺子的五张牌花色不能相同)。参 见:https://zh.wikipedia.org/wiki/%E6%92%B2%E5%85%8B%E7%89%8C%E5%9E %8B#.E7.89.8C.E5.9E.8B

Input

一行四个被空格隔开的长度为2或3的字符串,XY,表示你手里的牌。

X为2~10、J、Q、K、A中一个,表示点数,Y为S、H、C、D分别表示黑桃、红心、梅花和方块。

Output

一行一个分数表示概率,注意你的分数需为最简分数,若答案为0输出0/1。

Sample Input

10S JS QS KD

Sample Output

1/6

HINT

题意

题解:

直接模拟就好了,注意花色必须不全部相同

代码:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define test freopen("test.txt","r",stdin)
#define maxn 100001
#define mod 10007
#define eps 1e-9
const int inf=0x3f3f3f3f;
const ll infll = 0x3f3f3f3f3f3f3f3fLL;
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
//************************************************************************************** //A、2、3、...、J、Q、K
int gcd(int a,int b)
{
if(b==) return a;
return gcd(b,a%b);
}
int lcm(int a,int b)
{
int c=gcd(a,b);
return a*b/c;
}
struct node
{
int x,y;
};
bool cmp(node a,node b)
{
return a.x<b.x;
};
string s[];
vector<node> q;
vector<node> a;
int num[][];
int main()
{
for(int i=;i<;i++)
cin>>s[i];
for(int i=;i<;i++)
{
int mmm=;
if(s[i][s[i].size()-]=='S')
mmm=;
else if(s[i][s[i].size()-]=='H')
mmm=;
else if(s[i][s[i].size()-]=='C')
mmm=;
else if(s[i][s[i].size()-]=='D')
mmm=;
if(s[i][]=='A')
{
q.push_back((node){,mmm});
num[][mmm]++;
}
else if(s[i][]=='J')
{
q.push_back((node){,mmm});
num[][mmm]++;
}
else if(s[i][]=='Q')
{
q.push_back((node){,mmm});
num[][mmm]++;
}
else if(s[i][]=='K')
{
q.push_back((node){,mmm});
num[][mmm]++;
}
else if(s[i][]==''&&s[i][]=='')
{
q.push_back((node){,mmm});
num[][mmm]++;
}
else
{
q.push_back((node){s[i][]-'',mmm});
num[s[i][]-''][mmm]++;
}
}
int ans=;
for(int i=;i<=;i++)
{
int tt=;
while(tt<=)
{
if(num[i][tt])
tt++;
a.clear();
for(int j=;j<;j++)
a.push_back(q[j]);
a.push_back((node){i,tt});
sort(a.begin(),a.end(),cmp);
int flag=;
for(int j=;j<;j++)
{
if(a[j].x!=a[j+].x-)
break;
if(j==)
flag++;
}
if(flag==)
{
for(int j=;j<;j++)
{
for(int kiss=j+;kiss<;kiss++)
{
if(a[j].y!=a[kiss].y)
{
flag=;
ans++;
}
if(flag==)
break;
}
if(flag==)
break;
}
}
tt++;
}
}
int kk=ans,mm=;
int t=gcd(kk,mm);
kk/=t;
mm/=t;
printf("%d/%d",kk,mm);
}

hihocoder #1177 : 顺子 模拟的更多相关文章

  1. ACM学习历程—Hihocoder 1177 顺子(模拟 && 排序 && gcd)(hihoCoder挑战赛12)

      时间限制:6000ms 单点时限:1000ms 内存限制:256MB   描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种 ...

  2. 模拟 hihoCoder 1177 顺子

    题目传送门 /* 模拟:简单的照着规则做就可以了,把各种情况考虑到,虽然比赛写的丑了点,但能1Y还是很开心的:) */ #include <cstdio> #include <cst ...

  3. hihocoder 1177 : 顺子

    #1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的 ...

  4. hihoCoder 1392 War Chess 【模拟】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)

    #1392 : War Chess 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Rainbow loves to play kinds of War Chess gam ...

  5. 【hihocoder 1039 字符串消除】模拟

    题目链接:http://hihocoder.com/problemset/problem/1039 题意:给定一个只由{A, B, C}组成的字符串s,长度为n, 故包含n+1个空隙:现要求在某个空隙 ...

  6. hihoCoder #1053 : 居民迁移(贪心,二分搜索,google在线技术笔试模拟)

    #1053 : 居民迁移 时间限制:3000ms 单点时限:1000ms 内存限制:256MB 描述 公元2411年,人类开始在地球以外的行星建立居住点.在第1326号殖民星上,N个居住点分布在一条直 ...

  7. 九度OJ 1355:扑克牌顺子 (模拟)

    时间限制:2 秒 内存限制:32 兆 特殊判题:否 提交:1676 解决:484 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^). ...

  8. hihocoder #1616 : 是二叉搜索树吗?(模拟题)

    题目链接:http://hihocoder.com/problemset/problem/1616 题解:就是简单的模拟一下至于如何判断是不是二叉搜索树可以通过中序遍历将每个点存下来看是不是递增的如果 ...

  9. hihocoder 1489(微软2017, 数学,模拟)

    题目链接:http://hihocoder.com/problemset/problem/1489?sid=1587434 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 ...

随机推荐

  1. 再来说说Activity

    经过前面多天的了解,现在可以确信一点: activity提供了用户和程序交互的界面. 而且android里有四大组件:Activity,Service,BroadcastReceiver,Conten ...

  2. Exploit用法示例

    一.msf> show exploits与msf> show payloads:这两条命令用于展示Metaploit目录中所有可用的漏洞利用代码和攻击载荷. 二.msf> searc ...

  3. C# 关闭 Excel进程

    namespace ExcelTest   {       class DataOutput       {           static void Main(string[] args)     ...

  4. C# int.Parse()、int.TryParse()与Convert.ToInt32()的区别

    1.(int)是一种类型转换:当我们觟nt类型到long,float,double,decimal类型,可以使用隐式转换,但是当我们从long类型到int类型就需要使用显式转换,否则会产生编译错误. ...

  5. SQL SERVER 2008 R2 SP3 发布

    今晚上刚发现,微软很低调啊 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=44271 整合SP3的Express系列版本还没 ...

  6. Eclipse配置信息

    1.Eclipse VM arguments的保存位置: .metadata\.plugins\org.eclipse.debug.core\.launches (使用文件比较工具找出配置信息的保存位 ...

  7. JavaScript面向对象(01)--函数

    在JavaScript中,函数和对象有区别,也有联系, 首先函数是一个对象,但是和对象存在一些区别如下: 1,不论在java还是js中,如果把一个对象赋值给另一个变量,那么,后者会指向前者对象所在的内 ...

  8. poj2528(线段树+离散化)Mayor's posters

    2016-08-15 题意:一面墙,往上面贴海报,后面贴的可以覆盖前面贴的.问最后能看见几种海报. 思路:可以理解成往墙上涂颜色,最后能看见几种颜色(下面就是以涂色来讲的).这面墙长度为1~1000 ...

  9. home-brew 安装&下载

    安装: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&qu ...

  10. incompatible