网易2020 笔试题

第一题

题目描述

牛牛现在有一个包含n个正整数的数组a,牛牛可以将其中的每个数a[i] 都拆成若干个和为a[i]的正整数,牛牛想知道拆后(也可以一个数都不拆),这个数组最多能有多少个素数。

输入描述

第一行一个正整数n代表数组长度
第二行n个正整数代表a[i]的值
1<= n <= 1e6, 1 <= a[i] <= 1e9

输出描述

拆后数组最多的素数个数

输入
3
1 1 1

代码实现

import java.util.Random;
import java.util.Scanner;

public class MainTest {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String data=sc.nextLine();
        String arr[] = data.split(" ");
        Integer n=Integer.parseInt(arr[0]);
        Integer m=Integer.parseInt(arr[1]);
        int[] www=new int[m];
        if(!(1<=n&&n<=1000)){
            return;
        }
        if(!(n-1<=m&&m<=1000)){
            return;
        }
        for(int i=0;i<m;i++){
            sc=new Scanner(System.in);
            www[i]=new Random().nextInt(1000);
            System.out.print(new Random().nextInt(100)+" "+new Random().nextInt(100)+" "+www[i]);
            System.out.println();
        }


        System.out.println(exec(www));


    }
    public static int exec(int[] a) {
        int min = Math.abs(a[0] - a[1]);//最小相邻数差bai
        int t;//临时变量
        int p = 0;//位置
        for (int i = 1, length = a.length - 1; i < length; i++) {
            if(min >(t=Math.abs(a[i] - a[i + 1]))){
				min = t;
				p = i;
			}
		}
		return  min;
	}
}

第二题

题目描述

给定长度为m的序列T,求一个长度为n且字典序最小的排列,并且要求系列T为所求排列的子序列,题目保证这样的排列一定存在
S是T的子序列,当且仅当S是T通过删除任意数量元素所得到的。
字典序是单词在字典中的排列顺序,先比较第一个字母,然后比较第二个字母,依次类推。

输入描述

第一行输入两个正整数n和m
第二行输入m个数,表示输入序列T
1 <= m <= n <= 100000

输出描述

输出一行表示答案(注意处理行末空格)

输入
5 3
2 1 5

输出
2 1 3 4 5

代码实现

在这里插入代码片

第三题

题目描述

现在有n个物品,每一个物品都有一个价值,现在想将这些物品分给两个人,要求这两个人每一个人分到的物品的价值总和相同(个数可以不同,总价值相同即可),剩下的物品就需要丢掉,现在想知道最少需要扔掉多少价值的物品才能满足要求分给两个人。

输入描述

第一行输入一个整数T,代表有T组测试数据
对于每一组测试数据,一行输入一个整数n,代表物品的个数
接下来n个数,a[i] 代表每一个物品的价值

1 <= T <= 10
1 <= N <= 15

1 <= a[i] <= 100000

输出描述

对于每一组测试数据,输出一个答案代表最少需要扔掉的价值

输入

1
5
30 60 5 15 30

输出

20

代码实现

在这里插入代码片

你可能感兴趣的:(招聘,java,动态规划)