十二进制转十进制数78转化成九二进制转十进制的过程和结果是...

& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 解析9进制,11进制的字符串为10进制的数字输出
解析9进制,11进制的字符串为10进制的数字输出,输入的字符串有效位(0v)长度不超过8位,前面的00不算做有效位。解析后以10进制的数字输出。如果解析到非法字符串则返回-1&
9进制:&9进制的数的范围:0,1,2,3,4,5,6,7,8&9进制的开始为:0V或者0v&9进制的正确实例:0V11&0v564&0V123&0v&0v&0V&9进制的错误实例:0V923&0vt12&00V21&0123&&9进制转换为10进制:0V11&-&&10&&&&&&&&0v564&-&&463&&11进制:&11进制的数的范围:0,1,2,3,4,5,6,7,8,9,A(a)&11进制的开始为:0W或者0w&11进制的正确实例:0W11&0w564&0W123&0w0A8a&0W&0w&11进制的错误实例:0WB923&0wVaA&00W21&0WAx123&&11进制转换为10进制:&&&&&&&&0W11&-&&12&&&&&&&&0w564&-&&675
运行时间限制:
&输入为一行9进制或11进制的字符串,格式如上述
&输出为10进制的数字
这道题我是java实现的,因为9进制和11进制的字符串都有一定的规律,所以,想到用正则表达式来进行匹配。9进制的正则表达式为^0[v|V][0-8]*$,11进制的正则表达式为^0[w|W][0-9|a|A]*$。当输入的字符串符合其中的形式则进行解析,否则输入-1。
代码实现:
import java.util.S
import java.util.regex.P
public class Main {
public int charge(String num){
int res=0;
String reg1 = "^0[v|V][0-8]*$";
String reg2 = "^0[w|W][0-9|a|A]*$";
char sub[];
if(Pattern.matches(reg1, num)){
sub = num.substring(2).toCharArray();
for(int i = 0;i& sub. i++){
int count =Integer.parseInt(String.valueOf(sub[i]));;
res += count * Math.pow(9, sub.length-i-1);
}else if(Pattern.matches(reg2, num)){
sub = num.substring(2).toCharArray();
for(int i = 0;i& sub. i++){
if(sub[i]=='a'||sub[i]=='A'){
res += 11 * Math.pow(11, sub.length-i-1);
int count = Integer.parseInt(String.valueOf(sub[i]));
res += count * Math.pow(11, sub.length-i-1);
return -1;
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
Main main = new Main();
while (cin.hasNext()){
m = cin.next();
System.out.println(main.charge(m));
此代码在IDE下运行是没有问题的,但在华为的测试坏境下,有一个测试用例没有通过,因为测试用例是不公开的,所以我暂没找到原因,希望网友能帮忙找下bug.
阅读(...) 评论()以下试题来自:
单项选择题十进制数78转化为二进制数应等于()。
A.1001100&
B.1110001&
C.1001110&
为您推荐的考试题库
你可能感兴趣的试题
A.保护键盘、保护硬盘&
B.防止他人使用&
C.节省能源、保护屏幕&
D.以上说法都不对
A.该方案可投资&
B.该方案未来报酬的总现值小于初始投资的现值&
C.该方案的内部报酬率大于其资本成本&
D.该方案的净现值率大于零
A.EPC承包&
B.联合体承包&
C.D-B承包&
D.CM总承包
A.(5F)16
B.(6F)16
C.(6D)16
D.(6E)16
热门相关试卷
最新相关试卷

我要回帖

更多关于 二进制转十进制 的文章

 

随机推荐