360公司 2020测试类笔试卷 100%AC

1. 智力题

20题,30min,包括逻辑、找规律、简单计算(方程组求解、概率)等

2. 客观题

40题,1h,包括Java、C++、Web开发、Android开发、计算机专业基础等相关选择题

3. 编程题

2题,1h,代码量都不多,主要考察思维

3.1 计算数学期望

某厂加班发加班工资,连续加班i天则发i元工资,已经小A每天有以下几种可能,不加班(对应编号为0),加班(对应为1),50%可能加班50%可能不加班(对应为2),求计算其工作n天后得到的加班工资其数学期望(取整)
数据范围: 1<=n<=1e5
input:
3
1 2 1
output:
4
参考代码如下(C/C++):
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
class Solution {
    int n;
    ll judge() {
        cin >> n;
        double ans = 0; // 总的期望加班奖金
        double e = 0; // 今天的期望加班奖金
        for (int i = 0; i < n; ++i) {
            int status;
            cin >> status;
            if (status == 0) {
                e = 0;
            } else if(status == 1) {
                ++e;
            } else {
                e = (e + 1) * 0.5;
            }
            ans += e;
        }
        return ll(ans);
    }

public:
    Solution() {
        cout << judge() << endl;
    }
};
int main() {
    Solution solution = Solution();
    return 0;
}

3.2 可能算思维?

转换成数学语言为:已知a, b, c均为正整数,给定正整数n,求满足 (a - 2) * (b - 1) * (c - 2) = n 的约束下,a * b * c - n 的最大值
显然,a = 3, b = n + 1, c = 3时,a * b * c - n 的值最大(其实是不会证)
其他坑点:数据爆int
#360笔试##360公司##笔试题目##测试开发工程师#
全部评论
对第二题,我尝试给出一种还说得通的证明。 目标:最大化R*C*L - n; 约束:(R-2)*(C-1)(L-2) = n 这里先将约束的等式稍微修改下: = (R-2)*(C-1)*(L-2) = (R-2)*(C-2+1)*(L-2) 拆开后为 = (R-2)*(C-2)*(L-2) + (R-2)*(L-2) = n 第一部分的最大化问题与R*C*L的最大化问题等价(应该很容易理解,无需证明了) 求解R、C、L使得 max R*C*L (这其实就是目标,也等价于max R*C*L - n) 等价于max (R-2)*(C-2)*(L-2) 有前面拆分可知, (R-2)*(C-2)*(L-2) = n - (R-2)(L-2) 所以,如何让该式子最大化,即最小化 (R-2)(L-2) 最小为1,此时R=3, L=3 后面估计就不用讲了。
1 回复 分享
发布于 2020-03-28 09:29
能否对第一题多给出几个测例
点赞 回复 分享
发布于 2020-03-28 10:22
这一步是什么意思,不应该是最后的结果再乘以概率的和为多少
点赞 回复 分享
发布于 2020-03-28 00:21
太强了,大佬
点赞 回复 分享
发布于 2020-03-28 00:08
老哥,你第二题ac了吗?我就是用这个公式做的,怎么是91%呀?
点赞 回复 分享
发布于 2020-03-27 22:23

相关推荐

点赞 评论 收藏
分享
评论
4
17
分享

创作者周榜

更多
牛客网
牛客企业服务