zoukankan      html  css  js  c++  java
  • 编程题

      1. 某人年龄的立方是4位数,年龄的四次方是6位数,这10位数包含0到9,每个恰好出现一次,求他年龄多大

    public class One {
     public static void main(String[] args) {
         for (int i = 10; i < 100; i++) {
            int i1 = i*i*i;
            int i2 = i1*i;
            String s1 = i1+"";
            String s2 = i2+"";
            if(s1.length()==4&&s2.length()==6&&check(s1+s2)) {
                System.out.println(i);
                break;
            }
        } 
     }
    //验证十位包含0到9
    private static boolean check(String s) {
        //去重
        Set<Character> set = new HashSet<Character>();
        for(int i=0;i<s.length();i++) {
            set.add(s.charAt(i));
        }
        return set.size()==10;
    }
    }    

      2.  1 9 4 9四位数随意摆放它们的先后顺序,能组成多少个4位的素数

    //重复数据的全排列+检查
    public class One{
    
        static void f(int[] arr, int k) {
            if (k == 4)// 前面的已经确定,k为数组下标
                check(arr);
            for (int i = k; i < 4; i++) {
                // 交换
                int t = arr[k];
                arr[k] = arr[i];
                arr[i] = t;
                // 递归调用
                f(arr, k + 1);
                // 交换回来
                t = arr[k];
                arr[k] = arr[i];
                arr[i] = t;
            }
        }
    
        // 去重
        static Set<Integer> set = new HashSet<Integer>();
    
        // 验证十位数包含0到9
        private static void check(int[] arr) {
            // TODO Auto-generated method stub
            boolean flag = true;
            int x = arr[0] * 1000 + arr[1] * 100 + arr[2] * 10 + arr[3];
            for (int i = 2; i <= Math.sqrt(x); i++) {
                // 被二整除不是素数
                if (x % i == 0) {
                    flag = false;
                    break;
                }
            }
            // 素数添加到集合中
            if (flag) {
                set.add(x);
            }
    
        }
    
        public static void main(String[] args) {
            int arr[] = { 1, 9, 4, 9 };
            f(arr, 0);
            System.out.println(set.size());
        }
    
    }
        

      3. 假设 a b c d e 代表1-9不同的5个数字(注意是各不相同的数字,且不含0),能满足 ab * cde = adb * ce 这样的算式一共多少种?

    public class One {
        public static void main(String[] args) {
            int count = 0;
            //a,b,c,d,e都不等于零且它们不相等
            for (int a = 1; a < 10; a++) {
                for (int b = 1; b < 10; b++) {
                    if (b != a) {
                        for (int c = 1; c < 10; c++) {
                            if (c != a && c != b) {
                                for (int d = 1; d < 10; d++) {
                                    if (d != a && d != b && d != c) {
                                        for (int e = 1; e < 10; e++) {
                                            if (e != a && e != b && e != c && e != d) {
                                                if ((a * 10 + b) * (c * 100 + d * 10 + e) == (a * 100 + d * 10 + b)
                                                        * (c * 10 + e)) {
                                                    count++;
                                                    System.out.printf(
                                                            "(%d*10+%d)*(%d*100+%d*10+%d)==(%d*100+%d*10+%d)*(%d*10+%d)==%d
    ",
                                                            a, b, c, d, e, a, d, b, c, e,
                                                            (a * 100 + d * 10 + b) * (c * 10 + e));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            System.out.println(count);
        }
    }

      4.三十九层台阶一共走偶数步,在只能迈上1个或2个台阶的条件下一共要多少种走法?

    public class One5{
        public static void main(String[] args) {
            f(39,0);
            System.out.println(count);
        }
    /**
     * 
     * @param i 剩下的台阶数
     * @param j 已走的台阶数
     */
        static int count;
        private static void f(int i, int j) {
            // TODO Auto-generated method stub
            if(i<0) {
                return;
            }
            if(i == 0) {//39层台阶全走完
                if(j%2==0) {
                    count++;
                }
                return;
            }
            f(i-1,j+1);//一步走一个台阶
            f(i-2,j+1);//一步走两个台阶
            
        }
    }
  • 相关阅读:
    关于maven的一些记录
    3des和tomcat部署
    java串口通讯
    mina自定义编解码
    Linux 下关闭防火墙设置
    查看本机IP
    linux修改localhost方法
    centos 6.5下使用中文输入法
    linux:can't save files
    ng-model取不到值的问题
  • 原文地址:https://www.cnblogs.com/chaunceyji/p/10503617.html
Copyright © 2011-2022 走看看