#include<iostream> #include<algorithm> #include<string.h> #include<cstdio> long long a[12], b[12]; int c[1024]; using namespace std; int main() { b[0] = 1; for (int i = 1; i <= 10; i++) b[i] = 2 * b[i - 1]; int n; while (scanf("%d",&n)!=EOF) { memset(c, 0, sizeof(c)); for (int i = 1; i <= n; i++) { memset(a, 0, sizeof(a)); long long s = 0; long long m; scanf("%lld", &m); while (m > 0) { int k = m % 10; a[k] = 1; m = m / 10; } for (int i = 0; i <= 9; i++) s = s + a[i] * b[i]; c[s]++; } long long t = 0; for (int i = 0; i <= 1023; i++) { for (int j = i; j <= 1023; j++) { if (i == j) t = t + c[i] * (c[i] - 1) / 2; else { if (j&i) { t = t + c[i] * c[j]; } } } } printf("%lld\n", t); } return 0; }
#include<iostream> #include<algorithm> #include<string.h> #include<cstdio> int a[12], b[12]; int c[1024]; char s[20]; using namespace std; int main() { b[0] = 1; for (int i = 1; i <= 10; i++) b[i] = 2 * b[i - 1]; int n; while (scanf("%d", &n) != EOF) { memset(c, 0, sizeof(c)); for (int i = 1; i <= n; i++) { scanf("%s", s); int e = 0; for (int j = 0; s[j]; j++) e = e | b[s[j] - '0']; c[e]++; } long long t = 0; for (int i = 0; i <= 1023; i++) { for (int j = i; j <= 1023; j++) { if (i == j) t = t + c[i] * (c[i] - 1) / 2; else { if (j&i) { t = t + c[i] * c[j]; } } } } printf("%lld\n", t); } return 0; }