1100 Mars Numbers (20 分)

1100 Mars Numbers (20 分)

题意

10进制与13进制数的转换。给出一些字符串分别代表0-13和13的1到12倍(即13 26 39…)给你一个十进制数或者这些字符表示的13进制数,写出对应的进制数(给出十进制数写出对应的字符串表示的13进制数,给出字符串表示13进制数则写出对应的十进制数) (数的范围 [0,169)

思路

开始没看懂题,看到后面的范围才反应过来。模拟十进制与13进制的相互转换,再找到对应的字符串即可。唯一麻烦的就是把13进制数与对应字符串的转换,最后提交出了点bug(有两点没过去),换了一种笨方法。因为范围很小,用程序把1-168对应的字符串打印出来存在数组,直接匹配。(直接用程序打印该数组,复制过来)

代码

#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{
	string mar1[169]={"tret",
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jly",
"aug",
"sep",
"oct",
"nov",
"dec",
"tam",
"tam jan",
"tam feb",
"tam mar",
"tam apr",
"tam may",
"tam jun",
"tam jly",
"tam aug",
"tam sep",
"tam oct",
"tam nov",
"tam dec",
"hel",
"hel jan",
"hel feb",
"hel mar",
"hel apr",
"hel may",
"hel jun",
"hel jly",
"hel aug",
"hel sep",
"hel oct",
"hel nov",
"hel dec",
"maa",
"maa jan",
"maa feb",
"maa mar",
"maa apr",
"maa may",
"maa jun",
"maa jly",
"maa aug",
"maa sep",
"maa oct",
"maa nov",
"maa dec",
"huh",
"huh jan",
"huh feb",
"huh mar",
"huh apr",
"huh may",
"huh jun",
"huh jly",
"huh aug",
"huh sep",
"huh oct",
"huh nov",
"huh dec",
"tou",
"tou jan",
"tou feb",
"tou mar",
"tou apr",
"tou may",
"tou jun",
"tou jly",
"tou aug",
"tou sep",
"tou oct",
"tou nov",
"tou dec",
"kes",
"kes jan",
"kes feb",
"kes mar",
"kes apr",
"kes may",
"kes jun",
"kes jly",
"kes aug",
"kes sep",
"kes oct",
"kes nov",
"kes dec",
"hei",
"hei jan",
"hei feb",
"hei mar",
"hei apr",
"hei may",
"hei jun",
"hei jly",
"hei aug",
"hei sep",
"hei oct",
"hei nov",
"hei dec",
"elo",
"elo jan",
"elo feb",
"elo mar",
"elo apr",
"elo may",
"elo jun",
"elo jly",
"elo aug",
"elo sep",
"elo oct",
"elo nov",
"elo dec",
"syy",
"syy jan",
"syy feb",
"syy mar",
"syy apr",
"syy may",
"syy jun",
"syy jly",
"syy aug",
"syy sep",
"syy oct",
"syy nov",
"syy dec",
"lok",
"lok jan",
"lok feb",
"lok mar",
"lok apr",
"lok may",
"lok jun",
"lok jly",
"lok aug",
"lok sep",
"lok oct",
"lok nov",
"lok dec",
"mer",
"mer jan",
"mer feb",
"mer mar",
"mer apr",
"mer may",
"mer jun",
"mer jly",
"mer aug",
"mer sep",
"mer oct",
"mer nov",
"mer dec",
"jou",
"jou jan",
"jou feb",
"jou mar",
"jou apr",
"jou may",
"jou jun",
"jou jly",
"jou aug",
"jou sep",
"jou oct",
"jou nov",
"jou dec"};
	int n,e,sum;
	string x;
//	for(int i=0;i<169;i++){
//		cout<<mar1[i]<<endl;
//	}
	scanf("%d",&n);
	getchar();
	while(n--){
		getline(cin,x);
//		cout<<x<<endl;
		if(x[0]>='0'&&x[0]<='9'){
			sum=0;
			e=1;
			for(int i=x.size()-1;i>=0;i--){
				sum+=(x[i]-'0')*e;
				e*=10;
			}
			cout<<mar1[sum]<<endl;
		}else{
			for(int i=0;i<169;i++){
				if(x==mar1[i]){
					printf("%d\n",i);
					break;
				}
			}
		}
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值