又到了一年一度的北京师范大学程序设计竞赛!本次比赛的负责人萌萌哒whalyzh同学要给大家发比赛账号。由于参赛队伍众多,面对长长的参赛名单,whalyzh同学表示压力山大。现在whalyzh同学实在忙不过来,就扔了一份参赛队伍的账号列表给你。为了确定给校内队伍颁发的各类奖项的名额,他需要知道一共有多少支校内队伍参加了比赛。
Input
第一行是一个正整数,表示测试数据的组数,
对于每组测试数据,
第一行是一个整数,表示队伍数量,
接下来行,每行是一个格式为"学校英文名缩写16-队伍编号"的字符串,表示队伍账号,保证学校英文名缩写只包含小写字母,编号是正整数且不含前导零,同一学校不同队伍的编号一定不同,来自不同学校的队伍的编号可能相同。
更多信息请参考样例。
Output
对于每组测试数据,输出一行,包含一个整数,表示参赛列表中本校(即学校英文名缩写是"bnu"的队伍)队伍的数量。
Sample Input
2 10 bac16-1 bit16-1 bitss16-1 bjfu16-1 bjtu16-1 bnu16-1 buaa16-1 cuc16-1 cugb16-1 google16-1 5 bnu16-1 bnu16-3 bnu16-5 bnu16-2 bnu16-4
Sample Output
1 5
Hint
对于第一组样例,只有"bnu16-1"是校内队伍。
对于第二组样例,所有队伍都是校内队伍。
题解:只要搜到bnu-16后就行了,不需要去重(之前以为需要);
AC代码:
#include <bits/stdc++.h>
using namespace std ;
char dp[1010];
int solve[1010];
int main()
{
int t ;
cin>>t;
while(t--)
{
memset(dp,0,sizeof(dp));
memset(solve,0,sizeof(solve));
int n ;
int flag = 0 ;
int p = 0 ;
cin>>n;
while(n--)
{
cin>>dp;
int len = strlen(dp);
if(dp[0]=='b'&&dp[1]=='n'&&dp[2]=='u'&&dp[3]=='1'&&dp[4]=='6')
{
int m = len - 6;
for(int i = 6 ; i<len ; i++)
{
m--;
flag += (dp[i]-'0')*pow(10,m);
}
solve[p]=flag;
p++;
flag = 0 ;
}
else continue;
}
sort(solve,solve+p);
int daan = unique(solve,solve+p) - solve;
cout<<daan<<endl;
}
return 0 ;
}