posts - 35, comments - 0, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          吸血鬼數(shù)字

          Posted on 2012-05-15 09:53 timelyxyz 閱讀(138) 評(píng)論(0)  編輯  收藏
          題目:吸血鬼數(shù)字是指位數(shù)為偶數(shù)的數(shù)字,可以由一對(duì)數(shù)字相乘而得到,而對(duì)數(shù)字各包含乘積的一半數(shù)的數(shù)字,其中從最初的數(shù)字中選取的數(shù)字可以任意排序。以兩個(gè)0結(jié)尾的數(shù)字是不允許的,列如:
          1260=21*60;
          1827=21*87;
          2187=27*81;
          請(qǐng)寫出一個(gè)程序,找出所有的4位吸血鬼數(shù)字。
          解:反過來想,
          不從考慮某個(gè)數(shù)(1001到9999)是不是吸血鬼數(shù),而是遍歷2位數(shù)相乘,看是否符合某種規(guī)則,符合的話,他們的積就是吸血鬼數(shù)

          package test1;

          import java.util.Arrays;
          import java.util.Scanner;

          /**
           * 吸血鬼數(shù)字:位數(shù)為偶數(shù),可以由一對(duì)數(shù)字相乘而得,這對(duì)數(shù)字分別是吸血鬼數(shù)字的一半位數(shù)的,順序不規(guī)定<br>
           * 1260=12*60, 1827=21*87
           */
          public class Vampire {

              public static void main(String[] args) {
                  System.out.printf("Please enter the length of the num : ");
                  Scanner s = new Scanner(System.in);
                  int x = s.nextInt();
                  calVampire(x);
              }

              public static void calVampire(int n) {
                  if (n % 2 != 0)
                      return;
                  else {
                      int subLength = n / 2;
                      int total = 0;
                      int min = (int) Math.pow(10, subLength - 1);
                      int max = (int) Math.pow(10, subLength) - 1;
                      for (int p = min; p <= max; p++) {
                          for (int k = p + 1; k <= max; k++) {
                              int val = p * k;
                              if (val > 9999 || val < 1000)
                                  continue;
                              String[] s1 = String.valueOf(val).split("");
                              String[] s2 = (String.valueOf(p) + String.valueOf(k))
                                      .split("");
                              Arrays.sort(s1);
                              Arrays.sort(s2);
                              if (Arrays.equals(s1, s2)) {
                                  total++;
                                  System.out.println(p + " * " + k + "=" + val);
                              }
                          }
                      }
                      System.out.println("Total num is : " + total);
                  }
              }

          }


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 蒙城县| 太白县| 抚宁县| 马尔康县| 铁岭市| 枣阳市| 镇远县| 正镶白旗| 平定县| 姜堰市| 蒲城县| 濮阳市| 台州市| 东山县| 凤山县| 宜都市| 河北省| 正定县| 金寨县| 荆州市| 进贤县| 营口市| 沧州市| 肇东市| 台州市| 靖远县| 博野县| 西乡县| 佛冈县| 宜春市| 天镇县| 泸州市| 林周县| 庐江县| 专栏| 龙口市| 三都| 宁城县| 曲阜市| 芦山县| 涟水县|