1375 - 谁是你的潜在朋友
“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。
Input
每个案例第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)
Output
每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)
Examples
Input
4 5 2 3 2 1
Output
1 BeiJu 1 BeiJu
Solution C
#include<stdio.h> int main() { int n,m; int index=0; int *vec,*sat; while(EOF!=scanf("%d %d",&n,&m)){ index=0; vec = (int*)malloc(n*sizeof(int)); sat = (int*)malloc((m+1)*sizeof(int)); memset(sat,0,sizeof(int)*(m+1)); while(index<n){ scanf("%d\n",(vec+index)); index++; } for(index=0;index<n;index++){ sat[vec[index]]++; } for(index=0;index<n;index++){ if(sat[vec[index]]>1){ printf("%d\n",sat[vec[index]]-1); } else { printf("BeiJu\n"); } } free(vec); free(sat); } }
Solution C++
#include <stdio.h> int main(){ int n, m; while(scanf("%d%d", &n, &m) != EOF){ int countBook[220] = {0}; int nums[220]; for(int i=0; i<n; i++){ scanf("%d", &nums[i]); countBook[nums[i]]++; } for(int i=0; i<n; i++){ if(countBook[nums[i]]-1){ printf("%d\n", countBook[nums[i]]-1); }else{ puts("BeiJu"); } } } return 0; }