【秋招笔试-试读版】9.11得物秋招(已改编)-太难了!!!

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历

✨ 本系列打算持续跟新 春秋招笔试题

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 笔试合集传送们 -> 🧷春秋招笔试合集

🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新

🍄 题面描述等均已改编,如果和你笔试题看到的题面描述不一样请理解,做法和题目本质基本不变。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞

alt

🍠 得物秋招笔试,来啦!!!

🍥 本次的T3有点困难,暂时不会正确的做法

1️⃣ 正则表达式+快速幂

2️⃣ 试除法求约数

3️⃣ 贪心+二分答案+数据结构, 比较难想

🪙 01.多项式系数计算器

问题描述

K小姐是一位热爱代数的高中生。最近,她在研究多项式时遇到了一个有趣的问题。她有一个由若干个一次多项式因式相乘组成的表达式,每个因式的形式都是 ( x + d ) (x + d) (x+d) ( x − d ) (x - d) (xd),其中 d d d 是一个非负整数。K小姐想知道,当这个表达式完全展开后, x x x 的一次项系数是多少。

由于结果可能很大,K小姐只需要知道系数对 10007 10007 10007 取模后的结果。你能帮助K小姐设计一个多项式系数计算器来解决这个问题吗?

输入格式

输入一行,包含一个字符串,表示K小姐的多项式表达式。字符串长度为 n n n ( 5 ≤ n ≤ 10000 ) (5 \leq n \leq 10000) (5n10000)

输出格式

输出一个整数,表示展开后 x x x 的一次项系数对 10007 10007 10007 取模的结果。

样例输入

(x-1)(x+5)

样例输出

4

样例输入

(x-1)(x+2)(x+3)

样例输出

1

数据范围

  • 5 ≤ n ≤ 10000 5 \leq n \leq 10000 5n10000
  • 每个因式中的常数项 d d d 满足 0 < d ≤ 9 0 < d \leq 9 0<d9

题解

正则表达式+快速幂

多项式展开性质

对于形如 ( x + a 1 ) ( x + a 2 ) . . . ( x + a n ) (x+a_1)(x+a_2)...(x+a_n) (x+a1)(x+a2)...(x+an) 的多项式,展开后 x x x 的一次项系数等于: ∑ i = 1 n ∏ j ≠ i a j \sum_{i=1}^n \prod_{j \neq i} a_j i=1nj=iaj ,写成另一种形式, ∑ i = 1 n P a i \sum_{i=1}^n \frac{P}{a_i} i=1naiP,其中 P = a 1 ⋅ a 2 ⋯ a n P = a_1 \cdot a_2 \cdots a_n P=a1a2an

乘法逆元

在模运算中,除法可以通过乘法逆元实现。

对于质数模数 p p p a a a 的乘法逆元 a − 1 a^{-1} a1 满足: a ⋅ a − 1 ≡ 1 ( m o d p ) a \cdot a^{-1} \equiv 1 \pmod{p} aa11(modp)可以通过费马小定理计算: a − 1 ≡ a p − 2 ( m o d p ) a^{-1} \equiv a^{p-2} \pmod{p} a1ap2(modp)

算法实现

a) 使用正则表达式提取所有常数项 a i a_i ai
b) 计算所有 a i a_i ai 的乘积 P P P,同时对 10007 10007 10007 取模。
c) 对每个 a i a_i ai,计算 P a i   m o d   10007 \frac{P}{a_i} \bmod 10007 aiPmod10007,使用乘法逆元实现除法。
d) 将所有结果相加并对 10007 10007 10007 取模,得到最终答案。

参考代码

🔒订阅专栏后解锁 → \to 🧷春秋招笔试合集

🪷 02.古董花瓶的共同特征

问题描述

K小姐是一位古董收藏家,她最近获得了四件珍贵的古代花瓶。这些花瓶来自不同的朝代,但K小姐注意到它们可能有一些共同的特征。每个花瓶都有一个特征值,K小姐想知道这四个花瓶是否存在一个大于1的共同特征因子。如果存在,她想找出最小的那个;如果不存在,她会认为这些花瓶之间没有特殊联系。

输入格式

第一行输入一个正整数 T T T,表示测试数据组数。

接下来 T T T 行,每行输入四个正整数 a a a b b b c c c d d d,分别表示四个花瓶的特征值。

输出格式

输出 T T T 行,每行一个整数,表示四个花瓶的最小共同特征因子(大于1)。如果不存在这样的因子,输出 − 1 -1 1

样例输入

2
2 3 5 7
4 8 16 32

样例输出

-1
2

数据范围

  • 1 ≤ T ≤ 10 1 \leq T \leq 10 1T10
  • 1 ≤ a , b , c , d ≤ 1 0 9 1 \leq a, b, c, d \leq 10^9 1a,b,c,d109

题解

试除法求约数

最大公约数做多了,最小公约数 ( ≠ 1 \neq 1 =1)来了你还会吗?

对最小的数求出他的所有约数,然后依次判断是否可以被成为其他所有数的公约数即可

时间复杂度: O ( T ( m i n ( a , b , c , d ) ) O(T\sqrt({min(a, b, c, d)}) O(T( min(a,b,c,d)) + 排序复杂度(可以不用)

参考代码

🔒订阅专栏后解锁 → \to 🧷春秋招笔试合集

📦 03.包裹分配问题

问题描述

LYA 公司是一家专门从事包裹配送的物流公司。在一次大型促销活动中,公司需要处理 n n n 个包裹的配送。每个包裹都有特定的长度 a i a_i ai 和宽度 b i b_i bi

为了确保包裹的安全运输,公司决定为每个包裹配备一个保护箱。仓库里有 n n n 种不同类型的保护箱,每种保护箱都有一个基础长度 c j c_j cj 和基础宽度 d j d_j dj。为了适应不同大小的包裹,保护箱可以按比例放大,放大系数用 k k k 表示。也就是说,实际使用时,第 j j j 种保护箱的长度为 c j ∗ k c_j * k cjk,宽度为 d j ∗ k d_j * k djk

一个保护箱只有在其长度大于等于包裹长度,且宽度大于等于包裹宽度时,才能被用来保护该包裹。每个保护箱只能用于一个包裹,多余的部分会被裁掉。

现在,LYA 公司的物流主管想知道,要成功配送所有 n n n 个包裹,保护箱的最小放大系数 k k k 应该是多少?

输入格式

第一行输入一个正整数 n n n,表示包裹的数量。

接下来 n n n 行,每行包含四个正整数 a i , b i , c i , d i a_i, b_i, c_i, d_i ai,bi,ci,di:

  • a i a_i ai b i b_i bi 分别表示第 i i i 个包裹的长度和宽度。
  • c i c_i ci d i d_i di 分别表示第 i i i 种保护箱的基础长度和基础宽度。

输出格式

输出一个正整数,表示最小的放大系数 k k k

样例输入

2
1 1 2 2
2 4 2 2

样例输出

2

数据范围

  • 1 ≤ n ≤ 50000 1 \leq n \leq 50000 1n50000
  • 1 ≤ a , b , c , d ≤ 100000 1 \leq a, b, c, d \leq 100000 1a,b,c,d100000

注意:本题不保证 a i > b i a_i > b_i ai>bi c i > d i c_i > d_i ci>di,但可以认为包裹的长度 a i a_i ai 只能与保护箱的长度 c i c_i ci 比较,包裹的宽度 b i b_i bi 只能与保护箱的宽度 d i d_i di 比较。

题解

二分答案+贪心+ 数据结构

这道题目本质上是一个二分答案和贪心,是一道 AtCoder 的改编题。

  1. 二分查找:
    二分答案 k k k。对于每个 k k k,检查是否所有包裹都能被保护箱覆盖。

  2. 贪心:
    对于给定的 k k k,需要判断是否所有包裹都能被覆盖。这里可以使用贪心策略:

    • 将所有放大后的保护箱和包裹按照(长、宽)倒序排序,具体实现看代码。
    • 从大到小遍历每个包裹,为其找到能覆盖它的最小保护箱,这里可以二分。
  3. 数据结构:
    Cpp中使用 multiset 来存储保护箱,这样可以在 log ⁡ n \log n logn 的复杂度,进行查找和删除操作。

    实际考试的时候这个复杂度对于Java和python选手比较危险,可以自行使用 TreemapSortedList 来实现。

  4. 时间复杂度分析:

    • 二分查找的复杂度是 O ( log ⁡ M ) O(\log M) O(logM),其中 M M M k k k 的上界。
    • 每次检查的复杂度是 O ( n log ⁡ n ) O(n \log n) O(nlogn),需要对 n n n 个包裹进行处理,每次处理需要在 multiset 中查找。
    • 总的时间复杂度是 O ( n log ⁡ n log ⁡ M ) O(n \log n \log M) O(nlognlogM)

参考代码

🔒订阅专栏后解锁 → \to 🧷春秋招笔试合集

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春秋招笔试突围

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值