PREV-041 abordar las cuestiones de Excel: Zhenti @java Puente Azul Grupo B de la Copa ejercicios anteriores

PREV-041 abordar las cuestiones de Excel: Zhenti @java Puente Azul Grupo B de la Copa ejercicios anteriores

Descripción del problema

dirección de celda de Excel indica muy interesante, que utiliza letras para representar el número de columna.
  Por ejemplo,
  A representa la primera columna. 1,
  B representa 2,
  el Z representa 26,
  AA representa 27,
  AB representa 28,
  BA representa 53,
  ...

Por supuesto, el número más grande de la columna de Excel se limita, por lo que no es difícil de convertir.
  Si queremos que esto representa un método generalizado, se puede poner un número grande se convierte en una larga secuencia de letras que?

El título que es el número requerido de entradas, salidas correspondientes representación dirección de Excel.
Ejemplo de entrada
26
Salida de muestra en
Z
de entrada de la muestra
2054
Salida de muestra
BZZ
tamaño de los datos y las convenciones
  que acordamos rango de entrada número entero [1,2147483647]

el consumo de memoria de pico (incluyendo máquinas virtuales) <256M
  el consumo de CPU <1000ms

Por favor, seguir estrictamente las exigencias de la producción, no superflua para imprimir algo como: "Por favor, introduzca ..." contenido no deseado.

Nota:
  principales necesidades de función para volver 0;
  uso exclusivo ANSI C / ANSI C ++ estándar,
  no llame a la función especial depende del entorno de construcción o sistema operativo.
  Todas las funciones deben ser # incluye explícitamente dependientes en el archivo de origen
  no se puede proporcionar mediante el diseño de cabecera común se omite.

Cuando el proceso de envío, prestar atención para seleccionar el idioma deseado y compilador de tipo tipo.

------------------------------

Estúpida algo que decir:
  Es algo así como una relación binaria, no exactamente. Como si el extremo de los dos es 1 cuando 26 bits es 1 cuando el extremo 3 26 * 26

YY algo que decir:
  Si los números se convierten a partir de una secuencia de letras mejor punto, boca abajo un pequeño problema, pero qué tan rápido se ejecuta el equipo.


Un método no es mía, puesto que aquí se puede comparar con la observación,


código:

import java.util.ArrayList;
import java.util.Scanner;

public class PREV041EXCEL地址 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int[] iA = new int[5000];
		int n = in.nextInt();
		int N=n;
		int i = 1;
		while (n != 0) {
			if (n % 26 == 0) {
				// +64转大写字母,+96转小写字母
				iA[i] = 26 + 64;
				n -= 1;
			} else {
				iA[i] = n % 26 + 64;
			}
			n /= 26;
			i++;
		}
		for (int j = i - 1; j > 0; j--) {
			System.out.print((char)iA[j]);
		}
		System.out.println( );
		System.out.println("===================================");
		//方法二:
		ArrayList<Integer> list=new ArrayList<Integer>();
		while(N>26){
			if(N%26==0){
				list.add(0);
				N=N/26-1;
			}else{
				list.add((int)N%26);
				N=N/26;
			}
		}
		list.add((int)N);
		int a[]=new int[list.size()];
		for(int d=0;d<list.size();d++){
			a[d]=list.get(d);
		}
		for(int d=0;d<a.length/2;d++){
			int t=0;
			t=a[d];
			a[d]=a[a.length-1-d];
			a[a.length-1-d]=t;
		}
		char c[]=new char[a.length];
		for(int d=0;d<c.length;d++){
			if(a[d]==0){
				c[d]='Z';
			}else{
				c[d]=(char)(a[d]+64);
			}
		}
		for(int d=0;d<c.length;d++){
			System.out.print(c[d]);
		}
	}
}

Publicado 29 artículos originales · ganado elogios 1 · vistas 1083

Supongo que te gusta

Origin blog.csdn.net/DAurora/article/details/105318625
Recomendado
Clasificación