K进制试题解析

一、先看一眼题

二、初步理解

明显这是在将10进制数转为k进制数。从0开始,一直枚举到n,不断的向最后一位+1,直到末位为k,则设置本位为0,上位进1,当然,其它各位都要进行检查逐个上位~

三、问题逐个处理

判断题
1、 若k=1,则输出ans时,len=n
作为第一个问题,难度肯定不能太高,一般采用特殊值法代入,尝试找出答案。我们以k=1,n=3代入 :

答案:F

2、若k>1,则输出ans时,len一定小于n
意思就是说k进制的位数是否一定小于n。举一个比较常见的二进制例子:2的二进制是10,它的位数是2位,len(2位)并一小于n(2)
答案:F

3、若k>1,则输出ans时,klen一定大于n
一个k进制数,如果有len位,每一位有k种变化,那么一共能表示klen种数值,数值是从0klen1的,所以说klen一定大于n
答案:T

4、若输入的n等于1015,输入的k1,则输出等于(D
A.1 B.(10301015)/2 C.(1030+1015)/2 D.1015

解析:根据判断题1的举例,可以发现,当k=1时,若i会发生一次进位,共循环n次,因此共发生n次进位,即输出n

5、若输入的n等于205,891,132,094,649,即330,输入的k为3,则输出等于(B
A.330 B.(3301)/2 C.3301 D(330+1)/2
解析:本题是要求一共发生了多少次进位操作,如果十进制数是100,共发生了100/10+100/100次进位,即n/101+n/102次,同样k=3进制时,个位每3次都会进一位,因此n的个位会有n/3次进位。n=330时,共发生330/3+330/32+330/33+...+30,利用等比数列求和公式,所以答案是B

**6、若输入的n等于100,010,002,000,090,输入的k10,则输出等于(B)
A11112222444543 B11112222444453
C11122222444543 D11112222444453

解析:
在前面第5题的分析基础上,本题也迎刃而解,10进制下,不用转换,n本身就是10进制展示的,将100,010,002,000,090依次拆分为下表格左边所示的4个数,参照第5题,求出每个数的进位总数,累加即可得到结果。

posted @   糖豆爸爸  阅读(212)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
Live2D
点击右上角即可分享
微信分享提示