#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *sysconv(unsigned sysin,unsigned sysout,const char *in,char *out)
  {
   static char digits[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   unsigned p,m;
   char *end,*pos,tmp;
   for(*out='0',end=out+1;*in;++in)
     {
      p=strchr(digits,toupper(*in))-digits;
      for(pos=out;pos<end;*(pos++)=digits[m-(p=m/sysout)*sysout]) m=(strchr(digits,toupper(*pos))-digits)*sysin+p;
      while(p) *(end++)=digits[m-(p=(m=p)/sysout)*sysout];
     }
   for(*end=0,pos=out;pos<end;tmp=*(--end),*end=*pos,*(pos++)=tmp) {}
   return out;
  }

int main()
  {
   unsigned sysin,sysout;
   static char in[1024],out[36*1024];
   for(;;)
     {
      printf("\rsystem wejsciowy: ");
      scanf("%u",&sysin);
      printf("\rsystem wyjsciowy: ");
      scanf("%u",&sysout);
      printf("\rliczba wejsciowa: ");
      scanf(" %1023s",in); // wypada jeszcze sprawdzić czy to poprawna liczba w systemie sysin ale to banał
      if(2>sysin||sysin>36||2>sysout||sysout>36) return 0;
      printf("\rliczba wyjsciowa: %s\n\n",sysconv(sysin,sysout,in,out));
     }
  }