zoukankan      html  css  js  c++  java
  • 基础算法题

    1.排它平方数

        小明正看着 203879 这个数字发呆。

        原来,203879 * 203879 = 41566646641

        这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。

        具有这样特点的6位数还有一个,请你找出它!

        再归纳一下筛选要求:
        1. 6位正整数
        2. 每个数位上的数字不同
        3. 其平方数的每个数位不含原数字的任何组成数位

    答案是一个6位的正整数。

    请通过浏览器提交答案。
    注意:只提交另一6位数,题中已经给出的这个不要提交。
    注意:不要书写其它的内容(比如:说明性的文字)。

     1 package nothing;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 /**
     7  * 排它平方数
     8     小明正看着 203879 这个数字发呆。
     9     原来,203879 * 203879 = 41566646641
    10     这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
    11     具有这样特点的6位数还有一个,请你找出它!
    12     再归纳一下筛选要求:
    13     1. 6位正整数
    14     2. 每个数位上的数字不同
    15     3. 其平方数的每个数位不含原数字的任何组成数位
    16     答案是一个6位的正整数。
    17     请通过浏览器提交答案。
    18     注意:只提交另一6位数,题中已经给出的这个不要提交。
    19     注意:不要书写其它的内容(比如:说明性的文字)。
    20  * @author hasee
    21  *
    22  */
    23 public class ExcludeNumber  {
    24     
    25     static boolean bit[] = new boolean[10];
    26     static List<Integer> list = new ArrayList<Integer>();
    27     public static void main(String[] args) {
    28         excludeNumber(0);
    29         
    30     }
    31     //深度遍历,剪枝的回溯
    32     public static void excludeNumber(int n){
    33         if(n == 6){
    34             long number=0; //注意溢出,不但平方后为long,此number也必须为long(不然运算时需要强制转换)
    35             for (int i = 0; i < 6; i++) {
    36                 number += list.get(5-i)*(Math.pow(10, i));  //注意^是异或!!!,而次方是Math.pow!!!
    37             }
    38             long square = number*number;
    39             char[] squStr = String.valueOf(square).toCharArray();
    40             char[] numStr = String.valueOf(number).toCharArray();
    41             for (char c0 : squStr) {
    42                 for (char c1 : numStr) if(c0 == c1) return;
    43             }
    44             System.out.println(number+"xxxx"+square);
    45             return;
    46         }
    47         int first= n==0 ? 1 : 0;
    48         for (int i = first; i < 10; i++) if(bit[i] == false){
    49             list.add(i);
    50             bit[i] = true;
    51             excludeNumber(n+1);
    52             list.remove((Integer)i);
    53             bit[i] = false;
    54         }
    55     }
    56 }
    View Code

    题来自:http://blog.csdn.net/u012027907/article/details/14157077

  • 相关阅读:
    [No0000139]轻量级文本编辑器,Notepad最佳替代品:Notepad++
    [No0000138]软件开发基础知识
    [No0000137]字符编码详解
    [No0000144]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈1/4
    [No0000136]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
    [No0000135]程序员修炼之道 Tips
    phpstorm 调试时浏览器显示The requested resource / was not found on this server
    php注解
    phpStorm 配置PHP_CodeSniffer自动检查代码
    php
  • 原文地址:https://www.cnblogs.com/jslee/p/3497883.html
Copyright © 2011-2022 走看看