笔试——3.30网易

第一题:

从两年前开始,小师妹就会给当年达到一定司龄的雷火同事发雷火司龄积木,共有4款,分别对应一周年,三周年,六周年和十周年。
今年,小师妹打算帮大家把更久以前没发的积木也补齐,请你帮小师妹算一下,四种积木分别需要采购多少件。
举例说明,如果某位员工今年刚好达到六年司龄,那么需要为他采购一周年,三周年,六周年共三件积木。如果某位员工今年刚好达到八年司龄,那么他在2年前的时候刚好是六周年,那时候已经领取过六周年的积木了,这次只需要为他采购一周年和三周年两件积木。


输入描述
第一行输入一个N (1 <= N <= 10000), 表示雷火的员工数量。

接下来一行是N个整数(1 <= 司龄 <= 20),表示每个员工今年达到的司龄。
输出描述
输出四个整数,表示4款积木分别需要采购的数量

#include<bits/stdc++.h>
using namespace std;


int main()
{
    int n;
    cin >> n;
    vector<int>arr(n);
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    vector<int>res(4, 0);
    for (int i = 0; i < n; i++)
    {
        if (arr[i] == 1)res[0]++;
        else if (arr[i] == 2)continue;
        else if (arr[i] == 3)res[1]++;
        else if (arr[i] == 4)res[0]++;
        else if (arr[i] == 5)res[0]++;
        else if (arr[i] == 6) { res[0]++; res[1]++; res[2]++; }
        else if (arr[i] == 7) { res[0]++; res[1]++; }
        else if (arr[i] == 8) { res[0]++; res[1]++; }
        else if (arr[i] == 9) { res[0]++; res[1]++; res[2]++; }
        else if (arr[i] == 10) { res[0]++; res[1]++; res[2]++; res[3]++; }
        else if (arr[i] == 11) { res[0]++; res[1]++; res[2]++; }
        else if (arr[i] == 12) { res[0]++; res[1]++; res[2]++; }
        else if (arr[i] >= 13) { res[0]++; res[1]++; res[2]++; res[3]++; }
    }
    cout << res[0] << " " << res[1] << " " << res[2] << " " << res[3];
}

一个一个判断很容易ac。

第二题:

#define _CRT_SECURE_NO_WARNINGS
能否熟练使用Ctrl + C和Ctrl + V决定了日常开发的效率,所以现在需要探寻最高效的CV操作。目前有含有一个字符A的文本,有以下四种操作:①Ctrl + A,全选目前文本;②Ctrl + S,选择单个文本;③Ctrl + C,复制所选文本;④Ctrl + V,粘贴所复制的文本。给定一组目标数量,求每一组通过上述4种操作得到目标文本数量的最少操作次数。

补充说明:Ctrl + V操作会自动把复制的文本粘贴到文档最后;Ctrl + C之后允许连续Ctrl + V进行粘贴。

例如,对于目标数量为3的时候,最少操作次数为4(Ctrl + A,Ctrl + C,Ctrl + V,Ctrl + V).

对于目标数量为8的时候,最少操作次数为8(Ctrl + A,Ctrl + C,Ctrl + V,Ctrl + A,Ctrl + C,Ctrl + V,Ctrl + V,Ctrl + V)


输入描述
第一行输入为一个正整数T,代表需要计算操作次数的组数,后续有T个正整数输入,M1,M2…MT,其中0 < T < 100,0 < M1,M2…MT < 16384。

输出描述
输出T个正整数N,代表对应的操作次数。

 示例 1

输入
2
3
8
 

第三题:

在各种App的广告中,我们经常能看到一个名为数字塔的游戏的“虚假”广告,游戏中,玩家具有一定的初始战斗力,需要挑战一个具有若干房间的塔楼。

每个房间里面盘踞着战斗力为x的怪物,玩家进入时发生战斗,若当前战斗力大于x,则战斗胜利并将自己的战斗力增加x,否则游戏失败。玩家可以以任意顺序进入房间,但每个房间至多进入一次。此外,玩家可以在任意时刻发动钞能力来进入一个额外的奖励房间,让自己的战斗力增加当前的1 / 10(向下取整)。

游戏中有若干待挑战的boss,每个boss具有一定的战斗力,请问玩家要成功挑战各个boss分别需要先至少进入几个房间?(提示:挑战boss不视为进入一次房间,也不会对战斗力造成影响;奖励房间不限次数,但视为进入一次房间)。


第一行输入三个整数p,n,m,分别表示玩家初始战斗力、数字塔的怪物房数量、boss数量。(10 <= p < 10 ^ 7,0 <= n <= 10 ^ 5, 1 <= m <= 10 ^ 5)

    接下来n行,每行一个整数x,表示每个怪物房间的怪物战斗力,x单调递增(1 <= x <= 10 ^ 7)。

    接下来m行,每行一个整数y,表示每个boss的战斗力(1 <= y <= 10 ^ 7)。


    输出描述
    输出m行,第i表示玩家要成功战胜第i个boss最少需要进入的房间数。


    示例 1

    输入
    10 0 1
    12
    输出
    3
    示例 2

    输入
    20 7 1
    10
    10
    10
    10
    10
    10
    10
    130
    输出
    12

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值