日期:2014-05-20  浏览次数:20584 次

求救各位大侠
一个正整数的个位数字是6,如果把个位数字移到首位,所得到的数是原数的4倍,试编程找出满足条件的最小正整数。


求救上题的编程思想和可供的Java代码

谢谢了

------解决方案--------------------
(1)个位数字为6;
(2)将个位的6移到首位,得到的新数是原数的4倍。

假设原来的数字去掉6后为A,那么这个数就是:10A+6,6移到前面去后这个数变成:6*10^N+A

依题意有:(10A+6)*4=6*10^N+A,整理得:13A=2*10^N-8。即等号后面是13的倍数。试算N=5时,A=15384。所以原来的数是153846。

------解决方案--------------------
Java code

      for(int i = 1; i>0; i++){
         String str = i+"";
         String x = str.substring(str.length()-1);
         if(x.equals("6")){
         int y = Integer.parseInt(6+str.substring(0,str.length()-1));
         if(i*4==y){
            System.out.println(i);
            break;
         }
         }
      }

------解决方案--------------------
public static void get() {
int i = 106;
while (true) {
// 如果找到了,则输出,跳出循环
if (i * 4 == change(i) * 6 + i / 10) {
System.out.println(i);
break;
}
i+=10;
}
}

// 寻找数的数量级
public static int change(int d) {
int result = 1;
int temp = d;
while ((temp /= 10) != 0) {
result *= 10;
}
return result;
}

最传统的方法,没有介入其他函数。