[CSP-J2024]T1 扑克牌

· · 题解

[CSP-J2024]T1 扑克牌

题意

每张牌具有两个属性:花色和点数。花色共有 4 种:方片、草花、红桃和黑桃。点数共有 13 种,从小到大分别为 A23456789TJQK。注意:点数 10 在本题中记为 T。这也就意味着,一共有 52 张扑克牌。 现在你有 n 张扑克牌,问你还有多少张没有拿到?

题解

直接桶存 n 张扑克牌中不重复的个数,用 52 减去即可。

#include<bits/stdc++.h>
using namespace std;
int a[5][14];
signed main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        string s;
        cin>>s;
        int cnt1=0,cnt2=0;
        if(s[0]=='D')
        {
            cnt1=1;
        }
        if(s[0]=='C')
        {
            cnt1=2;
        }
        if(s[0]=='H')
        {
            cnt1=3;
        }
        if(s[0]=='S')
        {
            cnt1=4;
        }
        if(s[1]=='A')
        {
            cnt2=1;
        }
        if(s[1]>='2'&&s[1]<='9')
        {
            cnt2=s[1]-'0';
        }
        if(s[1]=='T')
        {
            cnt2=10;
        }
        if(s[1]=='J')
        {
            cnt2=11;
        }
        if(s[1]=='Q')
        {
            cnt2=12;
        }
        if(s[1]=='K')
        {
            cnt2=13;
        }
        a[cnt1][cnt2]=1;
    }
    int cnt=0;
    for(int i=1;i<=4;i++)
    {
        for(int j=1;j<=13;j++)
        {
            cnt+=a[i][j];
        }
    }
    printf("%d",52-cnt);
}