rt,注意到如果 n 为 52 就直接输出 0,一样AC。
也就是下面这份代码:
#include<iostream>
using namespace std;
const int N=1e2+5;
int n,ans=52;
bool a[N][N];
inline int hasha(char c){
if(c=='D')return 1;
else if(c=='C')return 2;
else if(c=='H')return 3;
else if(c=='S')return 4;
}
inline int hashb(char c){
if(c=='A')return 1;
else if(c=='T')return 10;
else if(c=='J')return 11;
else if(c=='Q')return 12;
else if(c=='K')return 13;
else return c-'0';
}
signed main(){
cin>>n;
if(n==52){
puts("0");
return 0;
}
while(n--){
char x,y;
cin>>x>>y;
a[hasha(x)][hashb(y)]=1;
}
for(int i=1;i<N;i++)for(int j=1;j<N;j++)ans-=a[i][j];
cout<<ans<<"\n";
return 0;
}
这份代码可以被这组数据卡掉:
52
DA
D2
D3
D4
D5
D6
D7
D8
D9
DT
DJ
DQ
DK
CA
C2
C3
C4
C5
C6
C7
C8
C9
CT
CJ
CQ
CK
HA
H2
H3
H4
H5
H6
H7
H8
H9
HT
HJ
HQ
HK
SA
S2
S3
S4
S5
S6
S7
S8
S9
ST
SJ
SQ
SQ
1
在输入数据中,SQ 出现了两次,而 SK 没有出现过,因此答案应该为 1。但代码的实际输出是 0。
难道所有的数据都满足特殊性质 A,雾