算法编程题:
有一个四位数字,前两位相同,后两位相同,同时这四位数字是一个数的平方,求该四数是什么?

解决方案 »

  1.   


    public class Test1 { public static void main(String[] args) {
    int[] a = { 1, 4, 9, 6, 5 };
    for (int i = 1; i <= 9; i++)
    for (int j = 0; j < a.length; j++) {
    int x = i * 1100 + a[j] * 11;
    int sqrtX = (int) Math.sqrt(x);
    if (sqrtX * sqrtX == x)
    System.out.println(x + "=" + sqrtX + "*" + sqrtX);
    }
    }
    }
    output:
    7744=88*88
      

  2.   


    class test
    {
    public static void main(String[] args){
    String str[]={"11","22","33","44","55","66","77","88","99"};
    String str1;
    int i,j,k,s;
    for(i=0;i<str.length;i++){
    for(j=0;j<str.length;j++){
    str1=str[i]+str[j];
    k=Integer.parseInt(str1);
    s=(int)Math.sqrt(k);
    if(s*s==k){
    System.out.println(k+"="+s+"*"+s);}
    }
    }
    }
    }
      

  3.   

    package com;public class FindNum { /**
     * @param args
     */
    public static void main(String[] args) {
    int num = 0;
    for(int i=32;i<100;i++){
    num = i*i;
    String numStr = num+"";
    if(numStr.substring(0,1).equals(numStr.substring(1,2))&&numStr.substring(2,3).equals(numStr.substring(3))){
    System.out.println(numStr);
    }
    }

    }}
      

  4.   

    我也贴一个吧
    for(int i=32;i<100;i++){
        int a = i*i;
        if(a%11==0&&a/100%11==0){
    System.out.println(a);
        }
    }
      

  5.   


    除非用数论中的同余,二次剩余定理,那个n*n mod p, p为素,那个余数是杨辉三角(pascal三角)那个,可以用少有的步骤,直接算出结果。那是初中做奥数时的训练题。但是,你要的是计算机算法吧?不是为了解决数学问题,对吧?
    所以我觉得我的最多50次循环的算法,应该可以满足要求。