#define _CRT_SECURE_NO_DEPRECATE // to avoid VS2005 to display unnecessary warnings...

#include <stdio.h>
#include <string.h>

#define MAX_PROBLEM_SIZE 100

int solution[MAX_PROBLEM_SIZE],n;

int evaluateAbsolute() {
  int E=0;
  for (int k=1; k<=n-1; k++) {
    int Ck=0;
    for (int i=0; i<=n-k-1; i++)
      Ck+=solution[i]*solution[i+k];
    E+=Ck*Ck;
  }
  return E;
}

int main(int argc,char** argv) {
  if (argc < 2) {
    printf("USAGE: LABS <RLN>\n");
    return 0;
  }

  int i,j,curVal=1;
  n = 0;

  for (i=0; i<strlen(argv[1]); i++) {
    char ch = argv[1][i]; // get current character
    int repeat = 0;

    if (ch <= '9') // convert the character into number, A->10, B->11, etc
      repeat = ch-'0';
    else
      repeat = 10 + ch-'A';

    for (j=0; j<repeat; j++) // reconstruct the bit string
      solution[n++]=curVal;

    curVal *= -1; // reverse sign
  }

  int E = evaluateAbsolute();
  printf("s = '%s', n = %d, E(s) = %d, F(s) = %.2lf\n",argv[1],n,E,(double)n*n/(2*E));

  return 0;
}

