Pagini recente » Cod sursa (job #24094) | Cod sursa (job #1563081) | Cod sursa (job #2577408) | Cod sursa (job #3136877) | Cod sursa (job #3153907)
//https://www.infoarena.ro/problema/restante
#include <stdio.h>
#include <stdlib.h>
const int M = 36000, P = 31;
int main() {
freopen("restante.in", "r", stdin);
freopen("restante.out", "w", stdout);
int n;
int *mp = malloc(M * sizeof(int));
for (int i = 0; i < M; i++)
mp[i] = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
char s[17], f['z' + 1];
for (int j = 'a'; j <= 'z'; j++)f[j] = 0;
scanf("%s", s);
for (int j = 0; s[j]; j++)
f[s[j]]++;
int p = 1;
int key = 0;
for (int j = 'a'; j <= 'z'; j++) {
for (int k = 0; k < f[j]; k++) {
key += p * j;
key %= M;
p *= 31;
p %= M;
}
}
mp[key]++;
}
int ans = 0;
for (int i = 0; i < M; i++)
if (mp[i] == 1)
ans++;
printf("%d\n", ans);
return 0;
}