0329小红书笔试

test1:有n张牌,你有两发子弹,需要分别同时命中第一张牌和最后一张张牌,尝试求出概率,结果四舍五入保留10位小数;
实例
输入:2
输出:1.0000000000
test2:你有n个小红书账号,每个账号粉丝为a_n,你需要创建一个粉丝为k的新账号,你可以通过老账号发推文来宣传新账号,宣传的方式有两种。第一种是浅度宣传,浅度宣传可以为新账号增加a_n/2(向下取整)粉丝。第二种是重度宣传,重度宣传可以为新账号增加a_n粉丝。其中重度宣传你最多使用一次。求需要最少账号个数
实例
输入:5 81 2 3 4 10
输出:2(用第三个账号重度宣传和第五个账号浅度宣传)
test3:有n个数,求每个数第一次全都是偶数的期望
实例
输入:21,2
输出:1/2 * 4 + 1/8 * 6 + 1/32 * 8 +... =(我忘了咋算了)好像是6
public static void test1(){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        double x = n;
        double res = 2 / (x * (x - 1));
        DecimalFormat decimalFormat = new DecimalFormat("#.##########");
        String format = decimalFormat.format(res);
        System.out.println(format);
    }
public static void  test2(){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        int[][] dp = new int[k + 1][2];
        for (int i = 0; i <= k ; i++) {
            dp[i][0] = Integer.MAX_VALUE;
            dp[i][1] = Integer.MAX_VALUE;
        }
        dp[0][0] = 0;
        dp[0][1] = 0;
        for (int i = 0; i < n; i++) {
            int act = nums[i] / 2;
            for (int j = k; j >= act ; j--) {
                if (dp[j - act][0] != Integer.MAX_VALUE){
                    dp[j][0] = Math.min(dp[j][0], dp[j - act][0] + 1);
                    dp[j][1] = Math.min(dp[j][1], dp[j - act][1] + 1);
                }
                if (j - nums[i] >= 0 && dp[j - nums[i]][0] != Integer.MAX_VALUE){
                    dp[j][1] = Math.min(dp[j][1], dp[j - nums[i]][0] + 1);
                }

            }
        }
        System.out.println(Math.min(dp[k][0], dp[k][1]));

    }
不知道对不对,是在考试后做的,题二是受@noodles:)老哥的提示。希望和大家一起讨论一下。
第三题不太会,有点思路但不多

#小红书笔试题#
全部评论
题二是3.24笔试的原题
点赞 回复
分享
发布于 03-29 23:16 江苏
佬,能帮我看看第一题什么问题嘛,55% ``` public class Main { public static BigDecimal calculate(int n){ if(n < 2){ return BigDecimal.ZERO; } BigDecimal num = new BigDecimal(2); BigDecimal devided = BigDecimal.valueOf(n).multiply(BigDecimal.valueOf(n - 1)); return num.divide(devided, 15, RoundingMode.HALF_UP); } public static void main(String[] args) { Scanner in = new Scanner(System.in); int count = in.nextInt(); BigDecimal property = Main.calculate(count); System.out.println(property.setScale(10, RoundingMode.HALF_DOWN)); } } ```
点赞 回复
分享
发布于 03-30 08:29 重庆
滴滴
校招火热招聘中
官网直投
第三题是春招原题。。ak了,春招a了一道
点赞 回复
分享
发布于 03-30 11:14 上海
第二题还是没看懂
点赞 回复
分享
发布于 04-10 13:37 北京

相关推荐

点赞 评论 收藏
转发
18 39 评论
分享
牛客网
牛客企业服务