C语言习题

1.假设在n进制下,下面的等式成立,567*456=150216,则n的值是()
A.9 B.10 C.12 D.18
解析:
首先可以排除选项B,因为肯定567*456!=150216
将等式两端转换为n进制
左侧=(5* n^2+6n+7) * (4* n^2+5n+6)
=20* n^4+49* n^3+88* n^2+71n+42
右侧=n^5+5* n^4+2* n^2+n+6
左侧=右侧,即
20* n^4+49* n^3+88* n^2+71n+42=n^5+5* n^4+2* n^2+n+6
//n的任何次方对n取余都为0
表达式两边同时对n取余,得到
(71n+42)%n=(n+6)%n
即42%n=6%n
由150216可知n最少为7进制,故6%n=6
即42%n=6 …………………………①
一般的题可以尝试用①式解,带入到每一个选项中,选出正确答案,若①式无法解出答案,则需要得出下一个表达式。
表达式两边同时除以n然后对n取余,得到
(71n+42)/ n % n=(n+6)/n % n
即(71+42/n)%n=(1+6/n)%n
6 < n故6/n=0, 1 < n故1%n=1
即(71+42/n)%n=1 …………………………②

带入选项:A.(71+42/9)%9=3!=1 排除A
B选项已经排除
C.(71+42/12)%12=2!=1 排除
D.(71+42/18)%18=1
故答案为D
2.求n!(n的阶乘)末尾有多少个0
(1)用十进制计算30!,将计算的结果转换成10进制后末尾有()个0?
解:在十进制里,=10的时候会进位,末尾会出现0,而十进制中2*5=10,产生2的倍数的频率大于产生5的倍数的频率,所以5 的倍数的个数即为末尾0的个数。故列出5的倍数:
5的倍数 5 10 15 20 25 30
5的个数 1 1 1 1 2 1
共7个
故末尾会有7个0

(2)用十进制计算30!,将结果转换成3进制进行表示的话,该进制下的末尾会有()个0?
解:在3进制里,=3的时候会进位,末尾会出现0,而3进制里只有1*3=3,故列出3的倍数:
3的倍数 3 6 9 12 15 18 21 24 27 30
3的个数 1 1 2 1 1 1 1 1 3 1
共14个,故末尾有14个0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值