面灵AI→

天翼云 9.19 笔试 相邻和为合数的构造题

轮次
笔试
时间
2026-09
来源
牛客网

《面试题目》

  1. 选择题:基础知识加一点大模型相关内容,整体偏简单。
  2. 算法第一题:模拟题,注意用 long 才能拿到满分。
  3. 算法第二题:数列构造,使相邻两数之和为合数。
  4. 算法第三题:(原帖未读懂题意,输出 0 拿到约 22% 分数)

《参考解析》

模拟题为什么要用 long:模拟题的坑通常不在逻辑,而在数据范围。计数、总和、时间戳、乘积这几类量级很容易超过 32 位:int 上限约 2.1×10^9,而题目里出现「次数上限」「累加总和」「数量乘单价」时很容易到 10^9 甚至 10^18。自检方法是读完题先把每个变量可能达到的最大值估一遍,凡是涉及累加、求和、乘法的量一律用 long(Python 无所谓,Java/C++ 要显式声明,C++ 用 long long)。另外注意 Java 里 int * int 会先按 int 溢出再赋给 long,正确写法是 1L * a * b。这类题用溢出丢分非常可惜,交卷前值得把所有累加变量再过一遍。

相邻和为合数的排列构造:先枚举小规模。n=1 时只有一个元素、没有相邻对,输出 1 即可。n=2、3、4 无解:排列里只要出现一个奇偶相邻对,其和就是奇数,而 1~4 范围内任意一对异奇偶之和只能是 3、5、7,全是质数;同奇偶相邻虽然和是偶数,但由于奇数和偶数都非空,排列中必然存在至少一个奇偶交界,所以必定失败,输出 -1。n ≥ 5 时把奇数排成一段、偶数排成一段:段内相邻两数同奇偶,和不小于 4 的偶数必为合数;只要让接缝处(最大奇数与段首偶数)之和是合数即可。例如 n=5 用 1 3 5 4 2(5+4=9),n=6 用 1 3 5 4 2 6,n=7 用 1 3 5 7 2 4 6(7+2=9)。做法是奇数升序全部输出,再从偶数里挑一个使「最大奇数 + 它」为合数的放在最前,其余偶数顺次输出,时间 O(n)。写构造题要养成习惯:先用暴力在小 n 上验证自己的构造公式,再上大数据,不要凭感觉交。

第三题没读懂时的保底策略:读不懂题意时,先判断输出类型和可能的取值范围,再交一个「最保守但可能合法」的答案,比如区间题输出 0 或 -1、计数题输出 0、最优化题输出上界或下界。这次输出 0 就拿到了约 22% 的分数,说明测试点里存在答案为 0 或边界情况。更系统的做法是:把题面里出现的样例和自己能构造的小样例先跑通,用特判把能确定的情况(n=1、空输入、全是同一元素)写死,剩余情况输出兜底值。注意别为了骗分写出明显非法输出(越界、超时、格式错误),那会连保底分都拿不到;时间要留够,先把能拿的分写完再回头啃难题。

大模型选择题会考什么:这类题通常不考公式推导,考概念边界。至少要能分清:预训练/微调/对齐三个阶段各做什么,SFT 与 RLHF 的区别,RAG 的检索与生成两段流程和常见失败原因,Prompt Engineering 与 Fine-tuning 的取舍,Token 与上下文窗口的关系,温度与采样参数对输出的影响,Embedding 与向量相似度的基本概念,以及 MoE、量化、蒸馏这些常见名词各解决什么问题。复习时按「是什么、解决什么问题、代价是什么」三句话整理,比背术语定义有效。