C语言解决进制转换习题

1.假设在n进制下,等式成立,567*456=150216.n的值为______。

A.9    B.10    C.12     D.18

首先,通过个位判断。如果n的值取10,那么个位应为7*6=42即个位应为2,但所给值个位为6。所以排除B。如果是n取9,那么结果应该大于十进制下的250000,故排除A。对于CD项,42对12和18取余结果都是6,假设为十进制,结果大约为250000左右,结果为150000左右。二者差值接近一倍但不到一倍。对应CD,十进制与十二进制的差值过小,十进制与十八进制的差值接近一倍但不足一倍。综上所述,本题应选择D。

上述解法运用单纯解题,以下为详细分析:

设进制为n;

(5*n^2+6*n+7)*(4*n^2+5*n+6)=(n^5+5*n^4+2*n^2+n+6)       (1)

将两侧式子打开:

20*n^4+25*n^3+30*n^2+24*n^3+30*n^2+36*n+28*n^2+35*n+42=n^5+5*n^4+2*n^2+n+6

化简为:20*n^4+49*n^3+88*n^2+71*n+42=n^5+5*n^4+2*n^2+n+6

对两侧同时对n取余:

(20*n^4+49*n^3+88*n^2+71*n+42)%n=(n^5+5*n^4+2*n^2+n+6)%n

  42%n=6%n

将9和10带入,等式不成立,而12和18带入等式同时成立;既然个位不足以判断,那么就向前推一位。凭借这一思维就可以得到:

(20*n^4+49*n^3+88*n^2+71*n+42)/n%n=(n^5+5*n^4+2*n^2+n+6)/n%n

   (71+42/n)%n=(1+6/n)

由上述可得n至少大于6,所以在C语言中整除6/n的值为0

故     (71+42/n)%n=1,得到这个式子后依次将12和18带入,结果为18。

这类题目通常只利用个位就可以得到结果,但遇到刁钻的题目,就可以向前推一位,但在完成题目时还是通过推测的方式效率较高。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值