• 最近一段时间代码汇总


    一,求解幸运数

     给定一个十进制的数,它的若干位之和等于二进制形式的各个位之和,则它就是幸运数。

    比如十进制数123,各个位之和为6;比如十进制数3,各个位之和为3,二进制表示为 011,各个二进制位之和为2 ,这两个和不相等,故十进制数3不是幸运数。

     下面程序实现了,给定一个数 num,求 1,2,3,....num 之间的所有的幸运数。

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while(sc.hasNextInt())
            {
                int count = sc.nextInt();
                int[] values = new int[count];
                for(int i = 0; i < count; i++)
                {
                    values[i] = sc.nextInt();
    
                }
                for(int i = 0; i < count; i++)
                {
                    int res = luckNumbers(values[i]);
                    if(res > 0)
                    System.out.println(res);
                }
            }
            sc.close();
        }
        
        private static int luckNumbers(int value){
            int count = 0;
            for(int i = 1; i <= value; i++)
            {
                int ten = process(i);
                int binary = process2(i);
                if(ten == binary)
                    count++;
            }
            return count;
        }
        
        private static int process(int value)
        {
            int sum = 0;
            while(value > 0)
            {
                sum += value % 10;
                value = value/10;
            }
            return sum;
        }
        
        private static int process2(int num){
            int count = 0;
            for(; num > 0; count++)
            {
                num &= (num - 1);
            }
            return count;
        }
    }

    二,第一行

    import java.util.Arrays;
    import java.util.Scanner;  
    
    public class Main {  
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            
            while(sc.hasNextLine())
            {
                String line = sc.nextLine();
                int tables = Integer.valueOf(line.split(" ")[0]);
                int customers = Integer.valueOf(line.split(" ")[1]);
                
                int[] cap = new int[tables];
                line = sc.nextLine();
                String lines[] = line.split(" ");
                for(int i = 0; i < cap.length; i++)
                    cap[i] = Integer.valueOf(lines[i]);
                
                Buy[] buyarr = new Buy[customers];
                for(int i = 0; i < customers; i++)
                {
                    line = sc.nextLine();
                    int numbers = Integer.valueOf(line.split(" ")[0]);
                    int money = Integer.valueOf(line.split(" ")[1]);
                    buyarr[i] = new Buy(money, numbers);
                }
                Arrays.sort(cap);
                Arrays.sort(buyarr);
                int count = 0;
                for(int i = 0; i < customers; i++)
                {
                    int numbers = buyarr[i].numbers;
                    int money = buyarr[i].money;
                    int j = 0;
                    boolean find = false;
                    for(; j < cap.length; j++)
                        if(numbers < cap[j])
                        {
                            cap[j] = 0;
                            find = true;
                            break;
                        }
                    if(find == true){
                        count += money;
                    }
                }
                System.out.println(count);
            }
        }
        
        private static class Buy implements Comparable<Buy>{
            int money;
            int numbers;
            
            public Buy(int money, int numbers) {
                this.money = money;
                this.numbers = numbers;
            }
            
            @Override
            public int compareTo(Buy o) {
                return o.money - this.money;//按money从大到小排序
            }
        }
    }

    三,使用两个线程,交替打印 1-10。线程A打印奇数,线程B打印偶数

    public class Test{
        public static void main(String[] args) {
            Print p = new Print();
            Thread t1 = new ThreadA(p);//负责打印奇数
            Thread t2 = new ThreadB(p);//负责打印偶数
            
            t2.start();
            try {
                Thread.sleep(100);//让当前线程睡一会儿,好让t2能够 start
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            t1.start();//t2 start之后,才启动t1
        }
    }
    
    class Print{
        private volatile boolean isA = false;
        public synchronized void printOdd(int i){
            try{
                while(i <= 9)
                {
                    while(isA == true)
                        wait();
                    System.out.print(i);
                    notifyAll();//让t2先启动,由于 isA初始为false,t2会wait,这样 t1获得锁打印了1之后,nofityAll发的通知才不会丢失
                    i+=2;
                    isA = true;
                }
            }catch(InterruptedException e){
                e.printStackTrace();
            }
            
        }
        public synchronized void print(int i){
            try{
                while(i <= 10)
                {
                    while(isA == false)
                        wait();
                    System.out.print(i);
                    i+=2;
                    notifyAll();
                    isA = false;
                }
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
    
    class ThreadB extends Thread{
        Print p;
        
        public ThreadB(Print p) {
            this.p = p;
        }
        
        @Override
        public void run() {
            p.print(2);
        }
    }
    
    
    class ThreadA extends Thread{
        Print p;
        
        public ThreadA(Print p) {
            this.p = p;
        }
        
        @Override
        public void run() {
            p.printOdd(1);
        }
    }
  • 相关阅读:
    jsp 头像上传显示部分代码实现
    Spring Boot
    php好书推荐
    提升PHP编程效率的20个要素
    mysql怎么查询一条记录的前一条记录和后一条记录
    jquery load 和 iframe 比较
    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式
    每日时间计划表
    Java获取某年第一天和最后一天
    s:if 判断
  • 原文地址:https://www.cnblogs.com/hapjin/p/5848222.html
Copyright © 2020-2023  润新知