Your school organized a big party to celebrate your team brilliant win in the prestigious, worldfamous ICPC (International Collegiate Poetry Contest). Everyone in your school was invited for an evening which included cocktail, dinner and a session where your team work was read to the audience. The evening was a success - many more people than you expected showed interested in your poetry - although some critics of yours said it was food rather than words that attracted such an audience.
Whatever the reason, the next day you found out why the school hall had seemed so full: the school director confided he had discovered that several of the tickets used by the guests were fake. The real tickets were numbered sequentially from 1 to N (N <= 10000). The director suspects some people had used the school scanner and printer from the Computer Room to produce copies of the real tickets. The director gave you a pack with all tickets collected from the guests at the party's entrance, and asked you to determine how many tickets in the pack had 'clones', that is, another ticket with the same sequence number.
Input
The input contains data for several test cases. Each test case has two lines. The first line contains two integers N and M which indicate respectively the number of original tickets and the number of persons attending the party (1 <= N <= 10000 and 1 <= M <= 20000). The second line of a test case contains M integers Ti representing the ticket numbers in the pack the director gave you (1 <= Ti <= N). The end of input is indicated by N = M = 0.
Output
For each test case your program should print one line, containing the number of tickets in the pack that had another ticket with the same sequence number.
Sample Input
5 5
3 3 1 2 4
6 10
6 1 3 6 6 4 2 3 1 2
0 0
Sample Output
1
4
题意:就是找到有编号一样的票有几种。
注意:本题主要是防止像666这样一个数字出现多次我们把他们重复计数的问题。那么我们把已经重复的数字全部置0,那么当我们遇到0
时就不进去比较,同时如果找到重复的就标记为1,若把t++写到j循环里的话,像666这种重复出现的话,t会重复叠加,所以t写到外面
代码:
#include<stdio.h>
int main()
{
int N,M;
while(scanf("%d",&N)&&scanf("%d",&M))
{
if(N==0&&M==0)
break;
int Ti[22000]={0};
int i,j;
int t=0;
for(i=0;i<M;i++)
scanf("%d",&Ti[i]);
for(i=0;i<M;i++)
{
int flag=0;
for(j=i+1;j<M;j++)
{
if(Ti[i]==Ti[j]&&Ti[i]!=0)
{
Ti[j]=0;
flag=1;
}
}
if(flag==1)
t++;
}
printf("%d\n",t);
}
return 0;
}