编程之美4.10扩展题

第一个问题是N位回文数的个数是多少?

 

分析:N是奇数与偶数时,是两种不同的计算方式。先看偶数,

 

n1 n2 .. nm nm .. n2 n1

 

N = m * 2

 

取值范围 n1: 1 ~ 9

              n2 - nm: 0 ~ 9

 

所以回文数f(N) = 9 * POW(10, N/2 - 1)

 

再看奇数,

 

n1 n2 .. nm nm+1 nm .. n2 n1

 

N = m * 2 + 1

 

由f(N)= 9 * POW(10, N/2 - 1) * 10

 

第二个问题:pow (he, 2) = she

 

看十进制,e可能的情况:0 , 1, 5, 6,

 

其实已经可以穷举了。再计算看看吧,能不能更有技术含量一点:

pow(he, 2) = (h * 10 + e) * (h * 10 + e) = 100 * h + 20 * e * h + e * e

 

e = 0: pow(he, 2) = 100 * h 可见十位必须是0,没有可选解

e = 1: pow(he, 2) = 100 * h + 20 * h + 1 = 120 * h + 1 = 100 * s + h * 10 + 1 => 110 * h = 100 * s, 没有可选解

e = 5: pow(he, 2) = 100 * h + 100 * h + 25 = 200 * h + 25 = 100 * s + h * 10 + 5 => 190h + 20 = 100 * s

 

可以得到解 (h = 2, s = 4)

 

e = 6: pow(he, 2) = 100 * h + 120 * h + 36 = 100 * s + h * 10 + 6 => 210 * h + 30 = 100 * s

 

可以得到解 (h = 7, s = 15),但是s大于9,不是一个合理解。

 

因此解是:pow(25, 2) = 625。

 

其他进制的先不算了。这道题为什么是3星,觉得没那么复杂。是不是我的答案有不对的地方呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值