日期:2014-05-16  浏览次数:20345 次

[算法问题1]
假设有一个5位数,第一位和最后一位调换后,其值变为原来的4倍。求这些数都是谁(没调换前)?
JS,JQ均可,给出思路得分少量,给出程序得分大量。

------解决方案--------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function change(num){
var m=num%10*10000+parseInt(num%10000/10)*10+parseInt(num/10000);
if(m<<2==num){
return true;
}
return false;
}
var a=[];
for(var i=10000;i<=99999;i++){
if(change(i)){
a.push(i);
}
}
document.write(a);
</script>
</head>

<body>
</body>
</html>
貌似不存在这样的数啊
------解决方案--------------------
引用:
Quote: 引用:

这种数不存在吧

嗯,可能不存在。就是要个思路

要思路的话,这样

for(var i=10001; i<25000; i++)
if(i*4==i.toString().replace(/(\d)(\d\d\d)(\d)/,"$3$2$1"))
document.write(i," ");

结果是无解
------解决方案--------------------
没有
var startNum = 10000;
var endNum =  99999;
var tmp = startNum;
var exchangeValue,$a;
var result=[];
for(tmp;tmp<endNum+1;tmp++){
$a = tmp+"";
exchangeValue = parseInt($a[4]+$a[1]+$a[2]+$a[3]+$a[0]);
if(4*tmp === exchangeValue){
result.push(tmp)
}
}
var $c = result;