2013-01-13 11:19:37Morris
[ZJ][計數] d578. 小涵的積木
內容 :
可愛的小涵有很多組相同的積木玩具組合,積木玩具組合裡的每一塊積木上都有一行奇怪的文字,代表該積木的形狀、顏色、等等沒用的資訊。
每一組積木玩具組合中,所含的積木種類跟數量是相同的。
有一天,她把所有積木都裝在同一個箱子裡玩,可是她發現她掉了一塊積木,現在她給你所有其他積木上的文字,想要找出她掉的那一塊積木上面所寫的文字。
輸入說明
:
輸入檔中可能有很多組測試資料。
每組測試資料的第一行有兩個正整數n與m,表示每一組積木組合有n塊積木(n≦10000000),而小涵共有m組積木組合(2≦m≦25)。
接著有(n × m-1)行,行中的文字表示每塊目前剩下的積木上面所寫的文字(不超過1000個字元)。
(你可以假設不會有多餘的無效字元,也就是除了換行符號外,所有字元都是該字串的一部分。)
測試資料的輸入檔不超過25MB。
如果n=m=0,代表測試資料結束,不用輸出任何資料。
輸出說明
:
對每一組輸入資料,輸出一行文字,代表小涵掉的那塊積木上寫的文字。
範例輸入 :
3 3 apple orange banana orange apple apple banana banana 4 2 D.R S P@#$sK! Aplcme U Aplcme U H.NK ;M P@#$sK! D.R S 0 0
範例輸出 :
orange H.NK ;M
提示
:
出處
:
(管理:magrady)
很明顯地會發現只有一個的話,在[位置][字元]的統計個數不會被 m 整除。
#include <stdio.h>
int main() {
int n, m, i, j;
char str[1024];
while(scanf("%d %d", &n, &m) == 2 && n) {
getchar();
n = n*m-1;
int cnt[1024][128] = {};
while(n--) {
gets(str);
for(i = 0; str[i]; i++)
cnt[i][str[i]]++;
}
for(i = 0; i < 1024; i++)
for(j = 0; j < 128; j++)
if(cnt[i][j]%m)
putchar(j), j = 129;
puts("");
}
return 0;
}
很明顯地會發現只有一個的話,在[位置][字元]的統計個數不會被 m 整除。
#include <stdio.h>
int main() {
int n, m, i, j;
char str[1024];
while(scanf("%d %d", &n, &m) == 2 && n) {
getchar();
n = n*m-1;
int cnt[1024][128] = {};
while(n--) {
gets(str);
for(i = 0; str[i]; i++)
cnt[i][str[i]]++;
}
for(i = 0; i < 1024; i++)
for(j = 0; j < 128; j++)
if(cnt[i][j]%m)
putchar(j), j = 129;
puts("");
}
return 0;
}