编程——错误的里程表

编程入门 行业动态 更新时间:2024-10-13 04:21:43

编程——错误的<a href=https://www.elefans.com/category/jswz/34/1763270.html style=里程表"/>

编程——错误的里程表

题目

某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从2变到4,而跳过数字3;从7变到9,而跳过数字8,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,如果里程表显示29,汽车走过1公里之后,该里程表显示40,但实际应该是30。

输入:
6   //这个表示输入行数
0
1
12
159
111224459
124567976
输出:
0
1
10
103
19212007
21913077

解题:

在数数的时候,我们正常从1数到10,之后11,这样是十进制。现在这个里程表,有两个数不显示,其实相当于当我们数到10的时候,其实只有1,2,4,5,6,7,9,10这8个数字,在这种情况下其实是8进制

所以,我们现在把显示的里程数,转成8进制即可,但要注意的是,我们数数的时候是直接丢掉了两个数,所以要判断当前某位上的数实际是多大。

比如假设显示 5,那么3 < 5 < 8的,所以实际只有4个数(5-1)
比如假设显示 9,那么9>3 ,9>8的,所以实际只有7个数(9-2)

function getOriginNum(x){//没有3和8var s = x;if(x>3) s--; //少一个数,就少数一个if(x>8) s--; //比如数到9,其实只有7个数return s;
}
转换进制
function getDecimalFromN(num,base){var s= 0,k=0;while(num>0){var a = num%10;a = getOriginNum(a);//进制转换计算公式s += a*base**k;k++;num = parseInt(num/10);}console.log(s);return s;
}getDecimalFromN(0,8);
getDecimalFromN(1,8);
getDecimalFromN(12,8);
getDecimalFromN(159,8);
getDecimalFromN(111224459,8);
getDecimalFromN(124567976,8);

更多推荐

编程——错误的里程表

本文发布于:2024-02-14 10:35:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763126.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:里程表   错误

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!