Números de Marte de la PTA (20 puntos)

Es la mente humana la que libera la luz infinita, y también es la mente humana la que crea la oscuridad ilimitada. La luz y la oscuridad se entrelazan y luchan juntas. Este es el mundo por el que estamos nostálgicos y desamparados.

Las personas en Marte cuentan sus números con base 13:

  • El cero en la Tierra se llama "tret" en Marte.
  • Los números del 1 al 12 en la Tierra se llaman "jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dic" en Marte, respectivamente.
  • Para el siguiente dígito más alto, la gente de Marte nombra los 12 números como "tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou", respectivamente.

Por ejemplo, el número 29 en la Tierra se llama "hel mar" en Marte; y "elo nov" en Marte corresponde a 115 en la Tierra. Para ayudar a la comunicación entre las personas de estos dos planetas, se supone que debe escribir un programa para la traducción mutua entre los sistemas numéricos de la Tierra y Marte.

Especificación de entrada:

Cada archivo de entrada contiene un caso de prueba. Para cada caso, la primera línea contiene un número entero positivo N (<100). Luego siguen N líneas, cada una contiene un número en [0, 169), dado en forma de un número de la Tierra o de Marte.

Especificación de salida:

Para cada número, escriba en línea el número correspondiente en el otro idioma.

Entrada de muestra:

4
29
5
elo nov
tam

Salida de muestra:

hel mar
may
115
13
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX

//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=3e5+10;
string a[13]={"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string b[13]={" ", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
string n;
void fman(int num){ 
    if (num>=13){
        if(num%13==0) 
			cout<<b[num/13];
        else 
			cout<<b[num/13]<<" "<<a[num%13];
    }
    else 
		cout<<a[num];
}
void ftian(){
    int t1=0, t2=0;
    string s1=n.substr(0, 3), s2;
    if (n.length()>4) 
		s2=n.substr(4, 3);
    for (int j=1; j<=12; j++) {
        if (s1==b[j]) 
			t1=j;
        if (s1==a[j]||s2==a[j]) 
			t2=j;  
    }
    cout<<t1*13+t2;
}
int main() {
    int x;
    cin>>x;
    getchar();
    for (int i=0; i<x; i++) {
        getline(cin, n);
        if (n[0]>='0'&&n[0]<='9')
            fman(stoi(n));
        else
            ftian();
        cout<<endl;
    }
    return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44170305/article/details/108430014
Recomendado
Clasificación