hihocoder 1177 : 顺子

#1177 : 顺子

时间限制:6000ms

单点时限:1000ms

内存限制:256MB

描述

你在赌场里玩梭哈,已经被发了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

输入

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

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

输出

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

样例输入
10S JS QS KD
样例输出
1/6
/**
          题意:如题给出了4张扑克  然后求得到顺子的概率
          做法:模拟  首先1,2,3,4,5不算顺子,然后题中的要求是不能是同花
                    然后开始模拟
**/
#include <iostream>
#include <string.h>
#include <cmath>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
char ch[10][10];
int mmap[10];
int main()
{
//#ifndef ONLINE_JUDGE
//    freopen("in.txt","r",stdin);
//#endif // ONLINE_JUDGE
    while(~scanf("%s %s %s %s",ch[0],ch[1],ch[2],ch[3]))
    {
        int res = 0,cet = 0;
        bool prime = true;
        for(int i=0; i<4; i++)
        {
            int len = strlen(ch[i]);
            int tt = 0;
            for(int j=0; j<len; j++)
            {
                if(isdigit(ch[i][j]))
                {
                    tt = tt * 10 + (ch[i][j] -‘0‘);
                }
            }
            if(ch[i][0] == ‘A‘) tt = 14;
            if(ch[i][0] == ‘J‘) tt = 11;
            if(ch[i][0] == ‘Q‘) tt = 12;
            if(ch[i][0] == ‘K‘) tt = 13;
            mmap[i] = tt;
            if(ch[i][len-1]  == ‘S‘) res = 1;
            if(ch[i][len-1] == ‘H‘) res = 2;
            if(ch[i][len-1] == ‘C‘) res = 3;
            if(ch[i][len-1] == ‘D‘) res = 4;
            if(i == 0)
            {
                cet = res;
            }
            if(res != cet)
            {
                prime = false;
            }
        }
        sort(mmap,mmap+4);
        int flag = 0;
        bool ok = true;
        for(int i=1; i<4; i++)
        {
            if(mmap[i] - mmap[i-1] == 1) continue;
            else if(mmap[i]- mmap[i-1] == 2)
            {
                if(!flag) flag = i;
                else  ok = false;
            }
            else ok = false;
        }
        if(ok == false)
        {
            printf("0/1");
        }
        else
        {
            if(flag)  ///在中间
            {
                if(prime) printf("1/16");
                else printf("1/12");
            }
            else
            {
                if(!prime)
                {
                    if(mmap[0] == 2 || mmap[3] == 14) printf("1/12");
                    else printf("1/6");
                                        }
                                        else
                                        {
                                                  if(mmap[0] == 2 || mmap[3] == 14) printf("1/16");
                                                  else printf("1/8");
                                        }
            }
        }
        printf("\n");
    }
    return 0;
}

时间: 2024-12-11 18:40:09

hihocoder 1177 : 顺子的相关文章

模拟 hihoCoder 1177 顺子

题目传送门 1 /* 2 模拟:简单的照着规则做就可以了,把各种情况考虑到,虽然比赛写的丑了点,但能1Y还是很开心的:) 3 */ 4 #include <cstdio> 5 #include <cstring> 6 #include <iostream> 7 #include <algorithm> 8 #include <cmath> 9 using namespace std; 10 11 const int MAXN = 1e2 + 10

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

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

时间限制:6000ms 单点时限:1000ms 内存限制:256MB   描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种花色的A.2.3.....J.Q.K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张. 顺子指的是点数连续的五张牌,包括10.J.Q.K.A这种牌型(不包含同花顺,即构成顺子的五张牌花色不能相同).参见:https://zh.wikipedia.org/wiki/%E6%92%B

hihoCoder挑战赛12 顺子(hihocoder 1177)

题目链接:http://hihocoder.com/problemset/problem/1177 题面: #1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种花色的A.2.3.....J.Q.K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张. 顺子指的是点数连续的五张牌,包括10.J.Q.K.A这种牌型(不包

Hihocoder 顺子

#1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种花色的A.2.3.....J.Q.K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张. 顺子指的是点数连续的五张牌,包括10.J.Q.K.A这种牌型(不包含同花顺,即构成顺子的五张牌花色不能相同).参见:https://zh.wikipedia.org/wiki

[HIHO1177]顺子(暴力,枚举)

题目链接:http://hihocoder.com/problemset/problem/1177 我不知道python为什么,加了排序会RE?? 1 d = {'J':11,'Q':12,'K':13,'A':14} 2 vc = set([]) 3 def g(v): 4 vc.add(v[1]) 5 if len(v[0]) == 2 or v[0] not in d: 6 return int(v[0]) 7 return int(d[v[0]]) 8 s = sorted(map(g,

【hihoCoder】【挑战赛#12】

模拟+枚举+模拟……+构造 QAQAQQQ rank12求杯子! A 顺子 ……模拟题,分类讨论一下就好了……比如当前四张牌是不是同一花色……是不是连续的四张牌,如果是连续的四张牌,是不是两边的……(呀我好像忘了判左边...只判了J Q K A....没判A 2 3 4... 没关系加几个字符就好了……嗯代码已改 1 //hihocoder 12 A 2 #include<vector> 3 #include<cstdio> 4 #include<cstring> 5

扑克牌顺子

题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!"红心A,黑桃3,小王,大王,方片5","Oh My God!"不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13.上面的5张牌就可以变成"1,2,3,4,5"

[hihoCoder#1381]Little Y&#39;s Tree

[hihoCoder#1381]Little Y's Tree 试题描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每次小J会删掉这个树中的k条边,这棵树被分成k+1个连通块.小J想知道每个连通块中最远点对距离的和. 这里的询问是互相独立的,即每次都是在小Y的原树上进行操作. 输入 第一行一个整数n,接下来n-1行每行三个整数u,v,w,其中第i行表示第i条边边权为wi,连接了ui,vi两点. 接下来一行一个整数q,表示有q组询问. 对于每组询问,第一行一个正整数k,接下来一