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笔试的原题
点赞 回复 分享
发布于 2024-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)); } } ```
点赞 回复 分享
发布于 2024-03-30 08:29 重庆
第三题是春招原题。。ak了,春招a了一道
点赞 回复 分享
发布于 2024-03-30 11:14 上海
第二题还是没看懂
点赞 回复 分享
发布于 2024-04-10 13:37 北京

相关推荐

02-10 21:39
Java
点赞 评论 收藏
分享
2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司
点赞 评论 收藏
分享
评论
18
40
分享

创作者周榜

更多
牛客网
牛客企业服务