#include <cstdio> int n, in, t[100], naw, wynik, akt, suma; char c[1000111], cg; bool odw, dasie; int main() { scanf("%d", &n); cg=getchar(); while(cg!=-1) { in++; c[in]=cg; cg=getchar(); } for(int i=0; i<=1<<n; i++) { dasie=true; suma=0; int x=i; for(int j=1; j<=n; j++) { if(x%2==1)t[j]=1; else t[j]=0; x/=2; } for(int j=1; j<=in; j++) { if(c[j]==')') { if(suma==0)dasie=false; suma=0; continue; } if(c[j]=='x') { if(c[j-1]=='~')odw=1; else odw=0; akt=c[j+1]-'0'; if(c[j+2]>='0'&&c[j+2]<='9')akt=akt*10+c[j+2]-'0'; akt=t[akt]; if(odw==true)akt=(akt+1)%2; suma+=akt; } } if(dasie)wynik++; } printf("%d\n", wynik); return 0; }
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 | #include <cstdio> int n, in, t[100], naw, wynik, akt, suma; char c[1000111], cg; bool odw, dasie; int main() { scanf("%d", &n); cg=getchar(); while(cg!=-1) { in++; c[in]=cg; cg=getchar(); } for(int i=0; i<=1<<n; i++) { dasie=true; suma=0; int x=i; for(int j=1; j<=n; j++) { if(x%2==1)t[j]=1; else t[j]=0; x/=2; } for(int j=1; j<=in; j++) { if(c[j]==')') { if(suma==0)dasie=false; suma=0; continue; } if(c[j]=='x') { if(c[j-1]=='~')odw=1; else odw=0; akt=c[j+1]-'0'; if(c[j+2]>='0'&&c[j+2]<='9')akt=akt*10+c[j+2]-'0'; akt=t[akt]; if(odw==true)akt=(akt+1)%2; suma+=akt; } } if(dasie)wynik++; } printf("%d\n", wynik); return 0; } |