题目1080:进制转换(2008年清华大学计算机研究生机试真题)ps:用java太简单了
2014-05-28 19:13
549 查看
题目1080:进制转换
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3356
解决:708
题目描述:
将M进制的数X转换为N进制的数输出。
输入:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出:
输出X的N进制表示的数。
样例输入:
样例输出:
提示:
输入时字母部分为大写,输出时为小写,并且有大数据。
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main{
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while( scanner.hasNext() ){
String m = scanner.next();
String n = scanner.next();
String x = scanner.next();
BigInteger bigM = new BigInteger(m);
BigInteger bigN = new BigInteger(n);
BigInteger b = new BigInteger("1");
BigInteger a = new BigInteger("0");
for (int i = x.length()-1; i >=0 ; i--) {
char c = x.charAt(i);
int t;
if(c >= '0' && c<= '9'){
t = c - '0';
}else{
t = c - 'A' + 10;
}
a = a.add(b.multiply(new BigInteger(String.valueOf(t))));
b = b.multiply(bigM);
}
List<Character> resultList = new ArrayList<Character>();
do{
int t = a.mod(bigN).intValue();
char c = 0;
if(t >= 10)
c = (char) (t - 10 + 'a');
else
c = (char) (t + '0');
resultList.add(c);
a = a.divide(bigN);
}while( !a.equals(new BigInteger("0")));
for (int i = resultList.size()-1; i >=0 ; i--) {
System.out.print(resultList.get(i));
}
System.out.println();
}
}
}
/**************************************************************
Problem: 1080
User: yihukurama
Language: Java
Result: Accepted
Time:1150 ms
Memory:102916 kb
****************************************************************/
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3356
解决:708
题目描述:
将M进制的数X转换为N进制的数输出。
输入:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出:
输出X的N进制表示的数。
样例输入:
16 10 F
样例输出:
15
提示:
输入时字母部分为大写,输出时为小写,并且有大数据。
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main{
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while( scanner.hasNext() ){
String m = scanner.next();
String n = scanner.next();
String x = scanner.next();
BigInteger bigM = new BigInteger(m);
BigInteger bigN = new BigInteger(n);
BigInteger b = new BigInteger("1");
BigInteger a = new BigInteger("0");
for (int i = x.length()-1; i >=0 ; i--) {
char c = x.charAt(i);
int t;
if(c >= '0' && c<= '9'){
t = c - '0';
}else{
t = c - 'A' + 10;
}
a = a.add(b.multiply(new BigInteger(String.valueOf(t))));
b = b.multiply(bigM);
}
List<Character> resultList = new ArrayList<Character>();
do{
int t = a.mod(bigN).intValue();
char c = 0;
if(t >= 10)
c = (char) (t - 10 + 'a');
else
c = (char) (t + '0');
resultList.add(c);
a = a.divide(bigN);
}while( !a.equals(new BigInteger("0")));
for (int i = resultList.size()-1; i >=0 ; i--) {
System.out.print(resultList.get(i));
}
System.out.println();
}
}
}
/**************************************************************
Problem: 1080
User: yihukurama
Language: Java
Result: Accepted
Time:1150 ms
Memory:102916 kb
****************************************************************/
相关文章推荐
- 2000年清华大学计算机研究生机试真题(Java自定义容器类的排序)
- 简单的素数问题(2008年北京航空航天大学计算机研究生机试真题)
- 九度题目1088:剩下的树 2011年清华大学计算机研究生机试真题
- 2008年清华大学计算机研究生机试真题
- 题目1065:输出梯形(2001年清华大学计算机研究生机试真题(第II套))
- 九度机试 题目1165:字符串匹配 2008年北京航空航天大学计算机研究生机试真题
- 题目1042:Coincidence(2008年上海交通大学计算机研究生机试真题)
- 题目1083:特殊乘法(2010年清华大学计算机研究生机试真题)
- 题目1065:输出梯形(2001年清华大学计算机研究生机试真题(第II套))
- 题目1207:质因数的个数(2007年清华大学计算机研究生机试真题)
- 九度题目1042:Coincidence 2008年上海交通大学计算机研究生机试真题
- 题目1163:素数 2008年北京航空航天大学计算机研究生机试真题
- 2008年清华大学计算机研究生机试真题
- 简单的素数问题(2008年北京航空航天大学计算机研究生机试真题)
- 题目1163:素数(2008年北京航空航天大学计算机研究生机试真题)
- 题目1076:N的阶乘(2006年清华大学计算机研究生机试真题)
- 九度机试 题目1165:字符串匹配 2008年北京航空航天大学计算机研究生机试真题
- 题目1118:数制转换(2008年北京大学图形实验室计算机研究生机试真题)
- 题目1078:二叉树遍历(2006年清华大学计算机研究生机试真题)
- 题目1026:又一版 A+B(2008年浙江大学计算机及软件工程研究生机试真题)