2018网易互娱秋招笔试题

1. 计算税

import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while (t > 0) {
            solve(sc.nextInt());
            t--;
        }
        sc.close();
    }

    public static void solve(int n) {
        if (n <= 5000) {
            System.out.println(0);
            return;
        }
        double l0, l1, l2, l3, l4, l5, tax = 0;
        l0 = 3000 * 0.03;
        l1 = l0 + 0.1 * (12000 - 3000);
        l2 = l1 + 0.2 * (25000 - 12000);
        l3 = l2 + 0.25 * (35000 - 25000);
        l4 = l3 + 0.3 * (55000 - 35000);
        l5 = l4 + 0.35 * (80000 - 55000);

        n = n - 5000;
        if (n <= 3000) tax = 0.03 * n;
        else if (n <= 12000) tax = l0 + 0.1 * (n - 3000);
        else if (n <= 25000) tax = l1 + 0.2 * (n - 12000);
        else if (n <= 35000) tax = l2 + 0.25 * (n - 25000);
        else if (n <= 55000) tax = l3 + 0.3 * (n - 35000);
        else if (n <= 80000) tax = l4 + 0.35 * (n - 55000);
        else if (n > 80000) tax = l5 + 0.45 * (n - 80000);
        System.out.println(Math.round(tax));
    }
}

2. 成员列表

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        List<String> names = new ArrayList<>(n);
        Map<String, Integer> title = new HashMap<>(n);
        for (int i = 0; i < n; i++) {
            String[] strs = br.readLine().split(" ");
            title.put(strs[1], Integer.parseInt(strs[0]));
            names.add(strs[1]);
        }
        Map<String, Integer> status = new HashMap<>(n);
        int m = Integer.parseInt(br.readLine());
        for (int i = 0; i < m; i++) {
            String[] strs = br.readLine().split(" ");
            status.put(strs[0], Integer.parseInt(strs[1]));
        }
        Collections.sort(names, (s1, s2) -> {
            if (status.get(s1) > status.get(s2))
                return -1;
            else if (status.get(s1) < status.get(s2))
                return 1;
            else if (title.get(s1) > title.get(s2))
                return -1;
            else if (title.get(s1) < title.get(s2))
                return 1;
            else
                return s1.compareTo(s2);
        });

        for (int i = 0; i < n; i++)
            System.out.println(names.get(i));

    }
}

3.时间区间

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

public class Main {

    static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        for (int i = 0; i < t; i++) {
            int k = Integer.parseInt(br.readLine());
            TimeZone[] zones = new TimeZone[7];
            for (int j = 0; j < k; j++) {
                String[] str = br.readLine().split(" ");
                int day = Integer.parseInt(str[0]);
                int count = Integer.parseInt(str[1]);
                TimeZone timeZone = new TimeZone();
                timeZone.day = day - 1;
                timeZone.count = count;
                for (int s = 2; s < count + 2; s++) {
                    String[] time = str[s].split("-");
                    timeZone.startList.add(LocalTime.parse(time[0], dtf));
                    timeZone.endList.add(LocalTime.parse(time[1], dtf));
                }
                zones[day - 1] = timeZone;
            }

            int query = Integer.parseInt(br.readLine());
            for (int s = 0; s < query; s++) {
                String[] str = br.readLine().split(" ");
                int day = Integer.parseInt(str[0]);
                LocalTime now = LocalTime.parse(str[1], dtf);
                solve(zones, day - 1, now);
            }
        }
    }

    public static void solve(TimeZone[] zones, int day, LocalTime now) {
        if (zones[day] != null) {
            TimeZone timeZone = zones[day];
            for (int i = 0; i < timeZone.count; i++) {
                int flag = handleTime(now, timeZone.startList.get(i), timeZone.endList.get(i));
                if (flag == 0) {
                    System.out.println(0);
                    return;
                } else if (flag == -1) {
                    System.out.println(diff(now, timeZone.startList.get(i)));
                    return;
                }
            }
        }
        int next = (day + 1) % 7;
        while (zones[next] == null) {
            next = (next + 1) % 7;
        }
        if (next < day) next = next + 7;
        TimeZone timeZone = zones[next];
        long res = (next - day) * 24 * 3600 + diff(now, timeZone.startList.get(0));
        System.out.println(res);
    }

    public static int handleTime(LocalTime now, LocalTime start, LocalTime end) {
        if (now.isBefore(start)) return -1;
        else if (now.isAfter(end)) return -2;
        else return 0;
    }

    public static long diff(LocalTime now, LocalTime next) {
        Duration duration = Duration.between(now, next);
        return duration.toMillis() / 1000;
    }


    static class TimeZone {
        int day;
        int count;
        List<LocalTime> startList;
        List<LocalTime> endList;

        public TimeZone() {
            startList = new ArrayList<>();
            endList = new ArrayList<>();
        }
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值