#12060. Security 2 构造

Security 2 构造

✅ Day 5:Security 2 构造


题目描述

你需要从一个空字符串出发,使用以下两种操作构造出目标数字字符串 SS

  • 按 A 键 ​:向末尾添加字符 '0'
  • 按 B 键 ​:将当前所有数字整体 + 1(注意 '9' 会变为 '0',类似轮盘)。

问:​ 最少需要多少次操作​,才能构造出目标字符串 SS


输入格式

一行,一个字符串 SS,仅包含数字字符(0~9),长度不超过 5×1055 \times 10 ^ 5


输出格式

一行,一个整数,表示构造目标字符串所需的最少按键次数。


输入样例

407

输出样例

17

构造提示

  • 后往前逐位构造;

  • 每一位固定一个 '0'(即按一次 A);

  • 然后通过若干次 B 操作将其调整为目标数字;

  • B 是全局共享的,要考虑累积偏移(轮盘式 + 1):

本位 B 操作数 = (k−b % 10 + 10) % 10 其中:

  • k 是目标位;
  • b 是当前累积的 B 次数;
  • 每位都要执行一次 A,再计算最小增量 B。

算法小贴士

*用一个变量 b 记录当前累计 B 操作偏移;

  • 从字符串尾部向前遍历,每位都:
  • A:计数 + 1;
  • B:计算需要补多少次,使当前位变成目标位;
  • 更新偏移量 b
  • 时间复杂度:O(S)O(| S | )