#include <bits/stdc++.h> #define N 10007 using namespace std; int n, promienie[3]; char tab[N]; int srodki[3]; int przeksztalc(string x){ // printf("%s\n", x.c_str()); int res = 0; for(int i = 0; i < n; i++){ res *= 2ll; res += (int)(x[i] - '0'); } return res; } int odleglosc(int p1, int p2) { int res = 0; while(p1 || p2) { if ((p1 % 2) != (p2 % 2)){ res += 1; } p1 /= 2; p2 /= 2; } return res; } bool wewnatrz(int punkt, int indeks) { int o = odleglosc(punkt, srodki[indeks]); // printf("odleglosc %d od %d= %d\n",punkt, srodki[indeks], o); return o <= promienie[indeks]; } int przeciecie() { int res = 0; for(int i=0; i < (1<<n); i++){ if (wewnatrz(i, 1) || wewnatrz(i, 2) || wewnatrz(i, 0)){ // printf("Wewnatrz\n"); res += 1; } } return res; } int main() { scanf("%d", &n); for (int i = 0; i < 3; i++) { scanf("%d%s", &promienie[i], tab); srodki[i] = przeksztalc((string)(tab)); // printf("%d\n", promienie[i]); } printf("%d\n", przeciecie()); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <bits/stdc++.h> #define N 10007 using namespace std; int n, promienie[3]; char tab[N]; int srodki[3]; int przeksztalc(string x){ // printf("%s\n", x.c_str()); int res = 0; for(int i = 0; i < n; i++){ res *= 2ll; res += (int)(x[i] - '0'); } return res; } int odleglosc(int p1, int p2) { int res = 0; while(p1 || p2) { if ((p1 % 2) != (p2 % 2)){ res += 1; } p1 /= 2; p2 /= 2; } return res; } bool wewnatrz(int punkt, int indeks) { int o = odleglosc(punkt, srodki[indeks]); // printf("odleglosc %d od %d= %d\n",punkt, srodki[indeks], o); return o <= promienie[indeks]; } int przeciecie() { int res = 0; for(int i=0; i < (1<<n); i++){ if (wewnatrz(i, 1) || wewnatrz(i, 2) || wewnatrz(i, 0)){ // printf("Wewnatrz\n"); res += 1; } } return res; } int main() { scanf("%d", &n); for (int i = 0; i < 3; i++) { scanf("%d%s", &promienie[i], tab); srodki[i] = przeksztalc((string)(tab)); // printf("%d\n", promienie[i]); } printf("%d\n", przeciecie()); } |