import java.util.Scanner;

public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		test();
		

		
	}

	
	public static int nCifre (int numero, int base){
		if (numero<base) return 1;
		return 1+nCifre(numero/base, base);
	}
	
	public static int daBaseA10 (int[] numero, int base){ //base è vase di partenza
		int somma=0;
		int valoreCifra=1;
		for (int i=0; i<numero.length; i++){
			somma += numero[i]*valoreCifra;
			valoreCifra *= base;
		}
		return somma;
	}
	
	public static int[] da10ABase (int numero, int base){//base è base di arrivo
		int[] risultato = new int [nCifre(numero,base)];
		for (int i=0; i<risultato.length; i++){
			risultato[i] = numero % base;
			numero = numero/base;			
		}
		return risultato;
	}
	
	public static void stampaNumero (int[] numero, int base){
		for (int i=numero.length-1; i>=0; i--){
			if (base>16 || numero[i]<10){
				System.out.print(numero[i]);
			} else {
				switch (numero[i]){
				case 10:
					System.out.print("A");
					break;
				case 11:
					System.out.print("B");
					break;	
				case 12:
					System.out.print("C");
					break;
				case 13:
					System.out.print("D");
					break;
				case 14:
					System.out.print("E");
					break;
				case 15:
					System.out.print("F");
					break;	
				}	
			}
			if (base>16 && i>0){
				System.out.print(";");
			}
			
		}
	}
	
	public static void test(){
		Scanner s = new Scanner(System.in);
		//chiedere all'utente la base di partenza
		int basePartenza;
		do{
			System.out.print("Qual è la base di partenza? ");
			basePartenza = s.nextInt();
			s.nextLine();
		} while (basePartenza<2);
		
		//chiedere all'utente il numereo di cifre
		int nCifrePartenza;
		do{
			System.out.print("Quante cifre ha il numero? ");
			nCifrePartenza = s.nextInt();
			s.nextLine();
		} while (nCifrePartenza<1);
		
		int[] numeroPartenza = new int [nCifrePartenza];
		//chiedere all'utente le cifre del numero
		for (int i=0; i<nCifrePartenza; i++){
			do{
				System.out.print("Inserisci la "+ (i+1)+ "° cifra: ");
				numeroPartenza[nCifrePartenza-1-i] = s.nextInt();
			} while ( numeroPartenza[nCifrePartenza-1-i]<0 
				    || numeroPartenza[nCifrePartenza-1-i] >= basePartenza);
		}

		//chiedere all'utente la base di arrivo
		int baseArrivo;
		do{
			System.out.print("Qual è la base di arrivo? ");
			baseArrivo = s.nextInt();
			s.nextLine();
		} while (baseArrivo<2);
		
		int numero = daBaseA10(numeroPartenza, basePartenza);
		int[] risultato= da10ABase (numero, baseArrivo);
		
		stampaNumero(risultato, baseArrivo);
		System.out.print(" è la rappresentazione in base " + baseArrivo + 
				        " del numero la cui rappresentazione in base " +
				        basePartenza +" è ");
		stampaNumero (numeroPartenza, basePartenza);
		
	}
	
}
