2022年8月笔试题

感染者转运问题

一个小区里有n个居民,第一天有k个传染病感染者,感染者需要转运到医院隔离和治疗,该小区第一天的转运 感染者的能力是p个人,第二天转运能力是p-1人,第三天转运能力是p-2人,以此类推。如果感染者当天没有转运出小区,则每一个感染者会在当天午夜12点感染1个人。请问这个小区需要多少天感染者能清零。用Java/ JS/TS/c++语言实现求清零天数函数。 要求:
(1)命名一个合适的函数名称,实现完整的函数
(2)按照你平时的编程习惯,在你认为需要注释处写上相应的注释
(3)代码行数尽可能少,代码运行复杂度尽可能小
(4)写出你实现代码的算法复杂度o(n)

public class Solution {
    // p-x+1为当天转运能力, f(x)为当天感染人数,x从1开始
    // f(1) 为k
    // f(x+1) = 2 * (f(x)-(p-x+1))
    public int calculate(int k, int p, int n) throws Exception {
        int infectus = k;
        int t = 1;
        while (t >= 1) {
            int deliver = p - t +1;
            // 边界条件1 转运能力小于0,不能清零
            if (deliver <=0 ) {
                throw new Exception("无法清零");
            }
            // 边界条件2 感染人数大于居民
            deliver = deliver > n ? n : deliver;
            infectus = 2 * (infectus - deliver);
            t += 1;
            // 转运能力大于感染人数的情况
            if (infectus <= 0) {
                break;
            }
        }
        return t;
    }

    public static void main(String[] args) {
        int k = 30;
        int p = 5; //5,16
        int n = 500;
        Solution s = new Solution();
        try {
            System.out.println(s.calculate(k,p,n));
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

计算器跳过4的问题

原题:程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。

出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。

你能根据计费表的数字,计算出实际的数字吗?

示例1、input 5 output 4

示例2、input 17 output 15

示例3、input 100 output 81

示例4、input 500 output 324

import java.util.Scanner;
public class test01 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int num = in.nextInt();
            int count = 0;
        	for (int i = 0; i <= num; i++) {
            String temp = i + "";
            if (temp.contains("4")) {
                count += 1;
            }
        }
        System.out.println(num - count);
        }
    }
}

学校组织活动,将学生排成一个矩形方针,请在矩形方阵中找到最大的位置相连的男生数量,这个相连位置在一个直线上,方向可以是水平的、垂直的、呈对角线的或者反对角线的。
注:学生个数不会超过10000.
输入描述:第一行为矩阵的行数和列数,接下来的n行为矩阵元素,元素间用","分隔
输出:一个整数
输入“:
3,4
F,M,M,F
F,M,M,F
F,F,F,M
输出:
3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值