返回信息流一个5位数,乘以4之后得到的是原数的逆序,编写程序输出满足要求的数
要求: 描述算法,并给出程序(编程语言任意选择)
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21695同步于 2007/10/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
向牛人请教一个小小的招聘编程题
yibo
2007/10/12镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
给你的要求你自己折腾吧。。。 问问题之前你自己一点思路都没有么
【 在 yibo (心灵捕手) 的大作中提到: 】
: 一个5位数,乘以4之后得到的是原数的逆序,编写程序输出满足要求的数
: 要求: 描述算法,并给出程序(编程语言任意选择)
最简单的办法,搜索,那个五位数乘以4肯定也是五位数,所以搜索范围是从10000到99999/4之间
然后逐个验证。
求各个位的方法是循环求除以10的4-0次方,然后对10取模
我只求出了一组:21978 87912
【 在 feiye 的大作中提到: 】
: 这题考的是编程的思想,算法的效率
: 3楼的方法可行,但肯定不是最好答案
同意.这不是考数学推算能力,是考程序
4这个数比较特殊,估计用二进制可能好点?
暴力,10000-99999都试验一遍,0ms可以解出来.
#!/usr/bin/ruby
for i in 10000..99999
j=i*4
if i.to_s == j.to_s.reverse
puts i.to_s + " " + j.to_s;
end
end
【 在 feiye 的大作中提到: 】
: 这题考的是编程的思想,算法的效率
: 3楼的方法可行,但肯定不是最好答案
编程思想不就是尽量简化运算么。。。能从数字特征推算的话肯定比穷举强啊。
Quake引擎里那个开方数不是也是这么来的么。。。
【 在 feiye 的大作中提到: 】
: 这题考的是编程的思想,算法的效率
: 3楼的方法可行,但肯定不是最好答案
#include<iostream.h>
void main()
{
cout<<21978;
}
ABCDE * 4 = EDCBA , 1 <= A <= 9, 0 <= B, C, D <= 9
A * 4 <= E < 10
so A = 1 or 2, E >= 4
(E * 4) % 10 = A
so A = 2, E = 3 or 8, E = 8
BCD * 4 + 3 = DCB
B * 4 <= D < 10
so B = 1 or 2, D >= 4
(D * 4 + 3) % 10 = B
so B is odd number, B = 1, D = 7
C * 4 + 3 = 30 + C
so C = 9
ABCDE = 21978
怎么样,我闲得蛋疼吧