El número de conversión decimal

124. El número de conversión decimal

Escribir un programa que puede lograr un número de una banda a otra banda.
Hay 62 dígitos diferentes {0-9, AZ, az}.
Formato de entrada
La primera entrada de línea de un número entero que representa el número de la fila siguiente.
Cada fila contiene los siguientes tres dígitos, primero de entrada binaria (notación decimal), entonces la salida binaria (notación decimal), y finalmente entrar en el número representado por la entrada binaria, separadas por un espacio entre los números.
Entrada binaria y salida binaria están en el intervalo de 2-62.
(En decimal) A = 10, B = 11 , ..., Z = 35, a = 36, b = 37, ..., z = 61 (0-9 aún representan 0-9).
Formato de salida
Para cada conjunto de conversión binaria, la salida del programa constituido por las tres líneas.
La primera línea contiene dos números, la primera entrada es hexadecimal (notación decimal), entonces el número de entrada representado por la entrada binaria.
La segunda línea contiene dos números, la primera salida es binaria (notación decimal), entonces la representación digital de la salida binaria de entrada.
La tercera fila está en blanco.
Dentro de los mismos números de línea separadas por un espacio.
de entrada de la muestra:

8
62 2 abcdefghiz
10 16 1234567890123456789012345678901234567890
16 35 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2
35 23 333YMHOUE8JPLT7OX6K9FYCQ8A
23 49 946B9AA02MI37E3D3MMJ4G7BL2F05
49 61 1VbDkSIMJL3JjRgAdlUfcaWj
61 5 dl9MDSWqwHjDnToKcsWE1S
5 10 42104444441001414401221302402201233340311104212022133030

Resultado de muestra:

62 abcdefghiz
2 11011100000100010111110010010110011111001001100011010010001

10 1234567890123456789012345678901234567890
16 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2

16 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2
35 333YMHOUE8JPLT7OX6K9FYCQ8A

35 333YMHOUE8JPLT7OX6K9FYCQ8A
23 946B9AA02MI37E3D3MMJ4G7BL2F05

23 946B9AA02MI37E3D3MMJ4G7BL2F05
49 1VbDkSIMJL3JjRgAdlUfcaWj

49 1VbDkSIMJL3JjRgAdlUfcaWj
61 dl9MDSWqwHjDnToKcsWE1S

61 dl9MDSWqwHjDnToKcsWE1S
5 42104444441001414401221302402201233340311104212022133030

5 42104444441001414401221302402201233340311104212022133030
10 1234567890123456789012345678901234567890

1. alta precisión de la conversión

división corta Qin Jiushao +
[vertedero de Enlace de la imagen externa falla, la estación de origen puede tener mecanismo de cadena de seguridad, se recomienda guardar la imagen hacia abajo cargado directamente (img-wWd3ZlSg-1583898444912) ( p1.png)]
para utilizar un binario Qin Jiushao convierte en 10 sistema, por ejemplo, ( 12345 ) 6 = ( ( ( ( ( 1 × 6 ) × 2 × 6 ) × 3 × 6 ) × 4 × 6 ) × 5 ) (12345) _6 = (((((1 × 6) x 2 x 6) × 3 × 6) × 4 × 6) × 5) .
divisor decimal corto 10 y luego se convierte a la b-aria.
Requieren alta precisión.
Aquí Insertar imagen Descripción

2. división Corto

Hacemos la división de una división de acuerdo con una serie de corta hexagonal, cada uno conserva el resto de la división es una rutina corta. por ejemplo ( 413 ) 5 (413) _5 3 se convierte en hexadecimal ( 11000 ) 3 (11000) _3 . Aquí Insertar imagen Descripción
Menos de líneas diez de código al núcleo acabado.

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
string sa,sb;
int a,b;
int A[N],B[N];
void solve(){
    sb.clear();
    int cnt=0,k=0,j=0;
    for(auto c : sa){
        if(c<='9'&&c>='0') A[cnt++]=c-'0';
        if(c<='Z'&&c>='A') A[cnt++]=c-'A'+10;
        if(c<='z'&&c>='a') A[cnt++]=c-'a'+36;
    }
    while(j<cnt){
        for(int i=j;i<cnt-1;++i){
            A[i+1]+=A[i]%b*a;
            A[i]/=b;
        }
        B[k++]=A[cnt-1]%b;
        A[cnt-1]/=b;
        if(j<cnt&&A[j]==0) ++j;
    }
    for(int i=k-1;i>=0;--i){
        sb+=(char)(B[k-i-1]<=9?B[k-i-1]+'0':(B[k-i-1]<=35?B[k-i-1]-10+'A':B[k-i-1]-36+'a'));
    }
    reverse(sb.begin(),sb.end());
    j=0;
    while(sb[j]=='0'&&j<k-1) ++j;
    cout<<a<<" "<<sa<<'\n';
    cout<<b<<" ";
    for(j;j<k;++j)
        cout<<sb[j];
    cout<<'\n'<<'\n';
}
int main(){
    int T;
    cin>>T;
    while(T--){
        cin>>a>>b;
        cin>>sa;
        solve();
    }
}
Publicado 96 artículos originales · ganado elogios 11 · vistas 2251

Supongo que te gusta

Origin blog.csdn.net/weixin_43769146/article/details/104793354
Recomendado
Clasificación