BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / sse / #4575同步于 2007/10/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SSE机器人发帖

向牛人请教一个小小的招聘编程题

yibo
2007/10/12镜像同步11 回复
一个5位数,乘以4之后得到的是原数的逆序,编写程序输出满足要求的数 要求: 描述算法,并给出程序(编程语言任意选择
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Freedom机器人#1 · 2007/10/12
id不错
abyzsin机器人#2 · 2007/10/15
一般每种语言都有数字和字符串相互转换的函数,逆序这种东西估计只能通过字符串的方式比较吧。判断是否逆序可以写个小函数。剩下的就只是循环所有五位数乘4判断了了。
liu1hong1yu机器人#3 · 2008/3/20
时间关系我只能给你一个解题思路。 此数可设为i*10000+j*1000+k*100+m*10+n 由题设可以分析道以下几点: 1.应该是偶数,此数末位是0,2,4,6,8 2.n<i (此数>得数) 3.5位数被除以后还是5位数,说明: 99999/4=24999.75 40000/4=10000 即此数应该是99996--40000之间的能被4整除的数,且最低位要等于2,4,6,8。 得数区间为24999--10000之间的数,且最低位要等于4-9之间的数。 由上行,可知得数的最高位的数是2或1,可以看出此数末位不能是大于2的数,因此此数的最低位只能是=2。(偶数) 此时得到的数区间为24999--20004之间的数,且得数的最低位要等于4-9之间的数。 可以根据得到的数进行遍历来逐个判断比较。共进行24999-20004=4995次判断。 这其中的最低位为0,1,2,3的数可以判断后直接派除。那么实际要判断的数其实只有 10-4=6 6/10=0.6 4995*0.6=2997次 进行3千次左右的判断,这应该是一瞬间的事了。 我觉得这道题其实就是根据题设来进行算法优化,程序是很好实现的。
caspar机器人#4 · 2008/3/20
不错 【 在 liu1hong1yu (虹雨) 的大作中提到: 】 : 时间关系我只能给你一个解题思路。 : 此数可设为i*10000+j*1000+k*100+m*10+n : 由题设可以分析道以下几点: : ...................
purevirtual机器人#5 · 2008/3/20
赞,真细致,应该就是如此... 【 在 liu1hong1yu 的大作中提到: 】 : 时间关系我只能给你一个解题思路。 : 此数可设为i*10000+j*1000+k*100+m*10+n : 由题设可以分析道以下几点: : ...................
bylee机器人#6 · 2008/3/21
【 在 liu1hong1yu 的大作中提到: 】 : 时间关系我只能给你一个解题思路。 : 此数可设为i*10000+j*1000+k*100+m*10+n : 由题设可以分析道以下几点: : ................... 赞。。。。。
greenteapot1机器人#7 · 2008/3/22
List results=new ArrayList(); for(int five_old=10000;five_old<=20000;five_old++) { int five_new=five_old*5; String oldStr=Integer.valueOf(five_old).toString(); String newStr=Integer.valueOf(five_new).toString(); char[] oldChars=oldStr.toCharArray(); char[] newChars=newStr.toCharArray(); boolean yes=true; for(int i=0;i<5;i++) { if(!(oldChars[i]==newChars[4-i])) yes=false; } if(yes==true) results.add(oldStr); }
greenteapot1机器人#8 · 2008/3/22
呵呵,results里的数据就是所有符合要求的噢
greenteapot1机器人#9 · 2008/3/22
看错题了, 修改如下: (1) for(int five_old=10000;five_old<=20000;five_old++) 改为 for(int five_old=10000;five_old<=25000;five_old++) (2) int five_new=five_old*5; 改为 int five_new=five_old*4;