hihocoder #1177 : 顺子 模拟
#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 : 顺子 模拟的更多相关文章
- ACM学习历程—Hihocoder 1177 顺子(模拟 && 排序 && gcd)(hihoCoder挑战赛12)
时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种 ...
- 模拟 hihoCoder 1177 顺子
题目传送门 /* 模拟:简单的照着规则做就可以了,把各种情况考虑到,虽然比赛写的丑了点,但能1Y还是很开心的:) */ #include <cstdio> #include <cst ...
- hihocoder 1177 : 顺子
#1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的 ...
- hihoCoder 1392 War Chess 【模拟】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)
#1392 : War Chess 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Rainbow loves to play kinds of War Chess gam ...
- 【hihocoder 1039 字符串消除】模拟
题目链接:http://hihocoder.com/problemset/problem/1039 题意:给定一个只由{A, B, C}组成的字符串s,长度为n, 故包含n+1个空隙:现要求在某个空隙 ...
- hihoCoder #1053 : 居民迁移(贪心,二分搜索,google在线技术笔试模拟)
#1053 : 居民迁移 时间限制:3000ms 单点时限:1000ms 内存限制:256MB 描述 公元2411年,人类开始在地球以外的行星建立居住点.在第1326号殖民星上,N个居住点分布在一条直 ...
- 九度OJ 1355:扑克牌顺子 (模拟)
时间限制:2 秒 内存限制:32 兆 特殊判题:否 提交:1676 解决:484 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^). ...
- hihocoder #1616 : 是二叉搜索树吗?(模拟题)
题目链接:http://hihocoder.com/problemset/problem/1616 题解:就是简单的模拟一下至于如何判断是不是二叉搜索树可以通过中序遍历将每个点存下来看是不是递增的如果 ...
- hihocoder 1489(微软2017, 数学,模拟)
题目链接:http://hihocoder.com/problemset/problem/1489?sid=1587434 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 ...
随机推荐
- Drupal如何更新注册表?
Drupal的注册表是指registry和registry_file两个数据表.前一个表保存所有可用的类和接口以及它们所对应的文件,后一个表保存每个文件的hash码. 1. 将所有需要更新的文件都汇总 ...
- U盘安装CentOS无法进入Centos系统解决办法
转自:http://blog.sina.com.cn/s/blog_3feedf320101idlu.html 目前使用U盘安装系统逐渐因为它的便捷而受到人们的欢迎,但是使用U盘来安装Cent ...
- TCP经受时延的ACK
下午看<卷1>的时候,感觉“TCP经受时延ACK”这段看的有些迷糊,最后还算理解了,所以这里记下来以免以后又忘了. 经受时延的ACK就是在接收到数据后不立马确认,而是等到内核的一个定时器到 ...
- Yii笔记---redirect重定向
Yii的redirect方法在CControler与CHttpRequest之中都有被定义,CController中的redirect调用了CHttpRequest中的redirect方法.我们平常调 ...
- 【DWT笔记】傅里叶变换与小波变换
[DWT笔记]傅里叶变换与小波变换 一.前言 我们经常接触到的信号,正弦信号,余弦信号,甚至是复杂的心电图.脑电图.地震波信号都是时域上的信号,我们也成为原始信号,但是通常情况下,我们在原始信号中得到 ...
- ansible中文手册-基础模块使用
此篇文章主要是翻译ansible官网文档而来,在里面讲述了如何使用ansible的基础模块,总体感觉比较晦涩,但是后面会写出自己相关实践的文档,从而更加通俗易懂,官网的东西拿来当手册偶尔翻翻也是很不错 ...
- C#缓存的一点想法及测试
项目开发中,用到了缓存,其中的一个列表项,可能要多线程处理,就有了下面的想法,具体的问题在代码中有详细说明,见下文. static void Main(string[] args) { 测试缓存的想法 ...
- offer--链表反转和从尾到头打印链表
这个是高频的面试题,今天总结了一些.反转链表用三个指针实现,返回新链表的头节点:而从尾到头打印,应用栈实现,返回vector整个链表. //题目描述 // //输入一个链表,反转链表后,输出链表的所有 ...
- [WinForm] 使用 WebBrowser 操作 HTML 頁面的 Element-摘自网络
前言 在 Window Form 應用程式如果需要瀏覽網頁時可以崁入 WebBrowser 控制項,但如果需要操作崁入的 HTML 的網頁元素,就需要額外的操作,以下紀錄幾種操作 HTML 元素的方法 ...
- Hadoop 1.1.2 Eclipse 插件使用——异常解决
permission denied user 1.修改配置文件在conf/hdfs-site.xml文件中添加如下内容: <property> <name>dfs.permis ...