百度笔试你们A了几道题
  百度凉凉,做的自闭了

  
   第一题a了10%,有大佬帮忙看一下吗,我的思路是如果n是素数,就返回n*(n-1)-1,如果n不是素数,就找到一大的素数,返回n*m-1 
 public static boolean isS(int n){
        for(int i = 2;i < Math.sqrt(n);i++){
            if(n % i==0)
                return false;
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner ac = new Scanner(System.in);
        int n = ac.nextInt();
        int num = 2;
        if(isS(n)){
            num = n-1;
        }else {
            for(int i = n;i>2;i--){
                if(isS(i)){
                    num = i;
                    break;
                }
            }
        }
        System.out.println(num+" "+n);
        if(n == 2)
            System.out.println(1);
        else {
            long sum = (long)n*num-1;
            System.out.println(sum);
        }
    } 第二题一直报错,思路是找到每次排序记录cnt ,cnt = (num[n-1]-num[n-2])/(n+1);
  一点也没过。。。。,有大佬指出一下错误在哪,谢谢
  
 public static void main(String[] args) {
        Scanner ac = new Scanner(System.in);
        int n = ac.nextInt();
        long[] num = new long[n];
        for(int i = 0;i < n;i++)
            num[i] = (long)ac.nextInt();
        Arrays.sort(num);
        long ans = 0;
        while(num[n-1] >= n){
            long b = num[n-1]-num[n-2];
            long cnt = b/(n+1);
            if(cnt == 0)
                cnt = 1;
//            System.out.println(cnt);
            num[n-1] -= n*cnt;
            for(int i = 0;i < n-1;i++)
                num[i] += cnt;
            ans += cnt;
            Arrays.sort(num);
        }
        System.out.println(ans);
    } 第三题的话过了60%,用的深搜,后来超时了,也没时间改了 public static int ans = 0;
    static class Node{
        public int val;
        public int index;
        public ArrayList<Node> next = null;
        Node(int val,int index){
            this.val = val;
            this.index = index;
        }
        public int getVal(){
            return val;
        }
        public ArrayList<Node> getNext(){
            return next;
        }
        public void setNext(ArrayList<Node> t){
            this.next = t;
        }
        public int getIndex(){
            return index;
        }
    }
    public static void main(String[] args) {
        Scanner ac = new Scanner(System.in);
        int n = ac.nextInt();
        Node[] nodes = new Node[n];
        for(int i = 0;i < n;i++){
            int tmp = ac.nextInt();
            nodes[i] = new Node(tmp,i);
        }
        for(int i = 0;i < n-1;i++){
            int a = ac.nextInt()-1;
            int b = ac.nextInt()-1;
            Node root = nodes[a];
            if(root.getNext() == null){
                ArrayList<Node> t = new ArrayList<>();
                t.add(nodes[b]);
                root.setNext(t);
            }else{
                root.getNext().add(nodes[b]);
            }
            Node root1 = nodes[b];
            if(root1.getNext() == null){
                ArrayList<Node> t = new ArrayList<>();
                t.add(nodes[a]);
                root1.setNext(t);
            }else{
                root1.getNext().add(nodes[a]);
            }
        }
        System.out.println(help(nodes));
//        for (int i = 0;i < n;i++){
//            System.out.print(nodes[i].getVal()+" ");
//            if(nodes[i].getNext() == null){
//                System.out.println();
//                continue;
//            }
//
//            int cnt = nodes[i].getNext().size();
//            for(int j = 0;j < cnt;j++)
//                System.out.print(nodes[i].getNext().get(j).getVal() +" ");
//            System.out.println();
//        }
    }
    public static int help(Node[] nodes){
        boolean[] isR = new boolean[nodes.length];
        for(int i = 0;i < nodes.length;i++){
            isR[i] = true;
            dfs(isR,nodes,1,i);
            isR[i] = false;
        }
        return  ans;
    }
    public static void dfs(boolean[] isR,Node[] nodes,int cnt,int beg){
        ArrayList<Node> tmp = nodes[beg].getNext();
        if(tmp == null){
            ans = Math.max(ans,cnt);
            return;
        }
        for(int i = 0;i < tmp.size();i++){
            Node node = tmp.get(i);
            int index = node.getIndex();
            if(!isR[index] && node.getVal() > nodes[beg].getVal()){//如果是递增的序列,dfs
                isR[index] = true;
                dfs(isR,nodes,cnt+1,index);
                isR[index] = false;
            }else if(!isR[index] && node.getVal() <= nodes[beg].getVal()){
                ans = Math.max(ans,cnt);//不满足条件,继续寻找
                isR[index] = true;
                dfs(isR,nodes,1,index);
                isR[index] = false;
            }
        }
        ans = Math.max(cnt,ans);
    } 
查看11道真题和解析