华为 · 基础数学 · 算法编程题
华为 基础数学 时限 1 秒 / 256 MB

题目描述

Vision Transformer 中,输入图像被切成等大的小块(patch),每个 patch 线性映射到 embedding,前面再加一个“分类 token”。已知图像边长 img_size、patch 边长 patch_size、通道数 channels、embedding 维度 embedding_dim。计算并输出 patch embedding 的形状:
·
token_count = (img_size / patch_size)² + 1(含分类 token)
·
输出两列:token_count 和 embedding_dim
说明:保证 img_size 可以被 patch_size 整除;不得使用任何深度学习框架。

输入输出

输入描述
一行四个整数:img_size patch_size channels embedding_dim
输出描述
一行两个整数:token_count embedding_dim

样例共 1 组

样例 1 · 384/32=12,每边 12 个 patch,共 12×12=144,加上分类 token 得 145,embedding 维度保持 512。
输入
384 32 3 512
输出
145 512

算法解析依据充分

考点:基础数学

限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:基础数学

本题切入点

纯公式:token_count = (img_size/patch_size)² + 1(含分类 token),与 embedding_dim 一起输出,不需要任何深度学习框架。

把题目转化为数学表达式,用公式或性质直接求值。

思路框架(基础数学 通法 · 非本题专属)

  1. 先写出题目要求的数学表达式或所求量的定义。
  2. 利用代数变形、不等式、函数单调性等性质化简。
  3. 按题面给的精度要求输出(浮点题注意误差)。
  4. 数据范围大时,往往存在 O(1) 或 O(log n) 的数学解,不必模拟。

实现要点:浮点输出通常要求相对误差不超过 1e-7,注意用 double/long double 或高精度小数。

复杂度:时间 O(1) ~ O(log n) | 空间 O(1)

该范式的通法易错点

  • 整数除法丢精度;浮点比较直接用 == 。
  • 题目要求「相对误差」而非「绝对误差」,输出格式没对齐。

样例解读

样例 1:输入 384 32 3 512 → 输出 145 512

384/32=12,每边 12 个 patch,共 12×12=144,加上分类 token 得 145,embedding 维度保持 512。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2025年秋招-华为-11月20号留学生AI岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解