Zadatak 1.



int brojParnihCifara(long n)
{
  int br = 0, c;
  while(n > 0)
  {
    br += 1 - (n % 2);
    n /= 10;
  }
  return br;
}

void main()
{
  long ulaz[20], izlaz[20];
  int i, n_ulaz, n_izlaz = 0;

  scanf("%d",&n_ulaz);

  for(i = 0; i < n_ulaz; i++)
  {
    scanf("%ld",ulaz + i);
    if((ulaz[i] > 9999)&&(ulaz[i] < 100000L)&&(brojParnihCifara(ulaz[i]) > 1))
      izlaz[n_izlaz++] = ulaz[i];
  }

  stampaj(izlaz,n_izlaz);
}


Zadatak 2.



void main()
{
  int a[20][20], okv[10], n, i, j, brok, nizmax[10], maks, ind, m;

  scanf("%d",&n);
  for(i = 0; i < n; i++)
    for(j = 0; j < n; j++)
      scanf("%d",&a[i][j]);
  brok = (n + 1) / 2;
  for(i = 0; i < brok; i++) okv[i] = 0;

  for(i = 0; i < n; i++)
    for(j = 0; j < n; j++)
    {
      ind = min(min(i,j),min(n-1-i,n-1-j));
      okv[ind] += a[i][j];
    }
  nizmax[0] = 0;
  maks = okv[0]; m = 1;

  for(i = 0; i < brok; i++)
    if(okv[i] > maks)
    {
      nizmax[0] = i;
      m = 1;
    }
    else
      if(okv[i] = maks) nizmax[m++] = i;

  for(i = 0; i < m; i++) printf("%d",nizmax[i]);
}


Zadatak 3.



(define (sumakv l)
  (if (null? l) 0
      (+ (* (car l) (car l)) (sumakv (cdr l)))
  )
)

(define (broj l)
  (if (null? l) 0
      (+ (car l) (* 10 (broj (cdr l))))
  )
)

(define (nadji cifre suma)
  (nadji2 1 cifre (- suma (sumakv cifre)))
)

(define (nadji2 k cifre razlika)
  (cond ((> k 9) 'nema_resenja)
        ((jesteCifra (- razlika (* k k))) 
         (broj (append (cons k (inv cifre)) (list (- razlika (* k k))))))
        )
        (t (nadji2 (+ k 1) cifre razlika))
  )
)

(define (inv l)
  (if (null? l) nil
      (append (inv (cdr l)) (list (car l)))
  )
)

(define (jesteCifra n)
  (if (and (> n 0) (< n 9)) t nil)
)

Zadatak 4.



duzina([],0).
duzina([G|R],N) :- duzina(R,N1), N is N1 + 1.

sp(L1,L2,N) :- duzina(L1,D1), duzina(L2,D2), !, D1 =!= D2, N is 0.
sp([G1|R1],[G2|R2],N) :- sp(R1,R2,N1), N is N1 + G1 * G2.