十二进制转十进制(n进制转十进制也一样)


       网上看到好多十进制转n进制的,很少有n进制转十进制的,今天来分享一种我的解法,欢迎大家交流批评。先上一段十二进制转十进制的代码,n进制转十进制也一样。

import java.util.Scanner;

public class n进制转10进制 {
	static int N=12;//进制
	public static void main(String args[]) {
		//将十二进制的2B转为10进制
		System.out.println(transfrom("2B"));
	}
	
	static int transfrom(String str){
		char[] arr = str.toCharArray();
		int sum=0;
		for(int i=0;i<arr.length;i++){
			sum=(int) (help(arr[i])*Math.pow(N, arr.length-i-1))+sum;
		}
		return sum;
	}
	
	//辅助方法,主要是将A,B,C字符转数字,这是十进制的数字
	static int help(char c){
		if(c=='0')
		   return 0;
		if(c=='1')
			   return 1;
		if(c=='2')
			   return 2;
		if(c=='3')
			   return 3;
		if(c=='4')
			   return 4;
		if(c=='5')
			   return 5;
		if(c=='6')
			   return 6;
		if(c=='7')
			   return 7;
		if(c=='7')
			   return 8;
		if(c=='9')
			   return 9;
		if(c=='A')
			   return 10;
		if(c=='B')
			   return 11;
		
		return -1;
		
	}
}

看完发现思路很简单但,就是将n进制每一位字符转为十进制数字,然后求和即可。下面来一道练习题。

猪八戒网2017校园招聘 移动开发工程师 在线考试
编程题 | 20分 1/1
龟兔赛跑
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
小A和小B正就龟兔赛跑的问题进行辩论。小A说,兔子永远追不上乌龟,因为如果龟兔一开始相距10米(兔子在乌龟后面),那么当兔子跑了10米的时候,乌龟又会向前走了1米;当兔子再跑一米的时候,乌龟又向前走了0.1米……这样乌龟和兔子之间总会存在一段距离,不管多小。
小A知道小B的数学不好,所以加上赌注说如果一方无法反驳,就要满足另一方一个要求。为了难倒小B,小A采用了12进制作为输入!为此,小B请聪明的你帮忙解决问题。
小B认为,如果已知了乌龟、兔子的速度以及最初相距的距离,那么只要知道了兔子赶上乌龟的第一个整数秒,就可以驳倒小A了,你怎么看?
输入
输入数据第一行为一个10进制整数T(T<=100),表示有T组测试数据。每组输入数据包含三行,每行为一个12进制整数,为vt, vg, d,分别代表兔子的速度(m/s),乌龟的速度(m/s),在第0秒的龟兔之间的距离(m),输入数据保证0<vg<vt<=BBBB,0<d<=BBBBBBBB,且每个整数合法(没有前缀0)。
输出
输出数据采用10进制整数,代表最小的整数秒t,使得在t秒时兔子追上了乌龟。

样例输入
2
5
2
9
10
A
1B
样例输出
3
12

题解如下:其中主要考察的就是十二进制转十进制。

package zbj;

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner reader = new Scanner(System.in);
		int n = reader.nextInt();
		//在读数字后面紧接着读字符串,一点要处理数字后面的回车,切记,切记,切记啊
		reader.nextLine();
		for(int i=n;i>0;i--){
			String vt = reader.nextLine();
			String vg = reader.nextLine();
			String d = reader.nextLine();

			int t=trans(vt);
			int g=trans(vg);
			int dd=trans(d);
			
			int T=dd/(t-g);
			//余数的问题没考虑到
			if(dd%(t-g)!=0)
				T=T+1;
			System.out.println(T);
		}
	}
	
	static int trans(String str){
		char[] arr = str.toCharArray();
		int sum=0;
		for(int i=0;i<arr.length;i++){
			sum=(int) (help(arr[i])*Math.pow(12, arr.length-i-1))+sum;
		}
		return sum;
		
	}
	
	static int help(char c){
		if(c=='0')
		   return 0;
		if(c=='1')
			   return 1;
		if(c=='2')
			   return 2;
		if(c=='3')
			   return 3;
		if(c=='4')
			   return 4;
		if(c=='5')
			   return 5;
		if(c=='6')
			   return 6;
		if(c=='7')
			   return 7;
		if(c=='7')
			   return 8;
		if(c=='9')
			   return 9;
		if(c=='A')
			   return 10;
		if(c=='B')
			   return 11;
		
		return 0;
		
	}
	
}




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值