zoukankan      html  css  js  c++  java
  • Java:thinging in java p154 exercise 10

    题目

    A vampire number has an even number of digits and is formed by multiplying a pair of numbers containing half the number of digits of the result. The digits are taken from the original number in any order. Pairs of trailing zeroes are not allowed. Examples include: 1260 = 21 * 60, 1827 = 21 * 87, 2187 = 27 * 81. Write a program that finds all the 4-digit vampire numbers. (Suggested by Dan Forhan.)

     1 public class VampireNumber {
     2 
     3     public static void main(String[] args) {
     4         int a = 0, b = 0, c = 0, d = 0;
     5         int[] m = new int[12];
     6         int[] n = new int[12];
     7 
     8         for (int i = 1000; i < 9999; i++) {
     9             // 分成4个数
    10             a = i / 1000;
    11             b = (i - a * 1000) / 100;
    12             c = (i - a * 1000 - b * 100) / 10;
    13             d = i % 10;
    14 
    15             m[0] = a * 10 + b;
    16             n[0] = c * 10 + d;
    17 
    18             m[1] = a * 10 + b;
    19             n[1] = d * 10 + c;
    20 
    21             m[2] = a * 10 + c;
    22             n[2] = b * 10 + d;
    23 
    24             m[3] = a * 10 + c;
    25             n[3] = d * 10 + b;
    26 
    27             m[4] = a * 10 + d;
    28             n[4] = b * 10 + c;
    29 
    30             m[5] = a * 10 + d;
    31             n[5] = c * 10 + b;
    32 
    33             m[6] = b * 10 + a;
    34             n[6] = c * 10 + d;
    35 
    36             m[7] = b * 10 + a;
    37             n[7] = d * 10 + c;
    38 
    39             m[8] = b * 10 + c;
    40             n[8] = d * 10 + a;
    41 
    42             m[9] = b * 10 + d;
    43             n[9] = c * 10 + a;
    44 
    45             m[10] = c * 10 + a;
    46             n[10] = d * 10 + b;
    47 
    48             m[11] = c * 10 + b;
    49             n[11] = d * 10 + a;
    50             for (int j = 0; j < 12; j++) {
    51                 if (i == m[j] * n[j]) {
    52                     System.out.println(i + " = " + m[j] + " * " + n[j]);
    53                 }
    54             }
    55 
    56         }
    57     }
    58 }

    输出

    1 1260 = 21 * 60
    2 1395 = 15 * 93
    3 1435 = 41 * 35
    4 1530 = 51 * 30
    5 1827 = 87 * 21
    6 2187 = 27 * 81
    7 6880 = 86 * 80
    8 6880 = 80 * 86
  • 相关阅读:
    c-复习基础
    java-根据起止IP获取IP段集合
    java-随机数
    java-数组
    TypeSafe Config使用
    日志手段
    git 常用命令
    看门狗
    容器HashSet原理(学习)
    容器Vector原理(学习)
  • 原文地址:https://www.cnblogs.com/taoxiuxia/p/4434527.html
Copyright © 2011-2022 走看看