D. 首位校验

    传统题 1000ms 256MiB

首位校验

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

首位校验

题目描述

给你一个只包含数字的字符串 ss

你需要把它切成若干个连续的段。每一段都必须满足:

这一段的第一个数字,等于这一段所有数字之和的个位数。

例如,246 是合法的一段,因为 2+4+6=122+4+6=12,和的个位数是 22,正好等于第一个数字 22

你需要求:

  1. 最少要切成多少段;
  2. 在段数最少的情况下,有多少种不同的切法。

答案对 998244353998244353 取模。

两个切法不同,当且仅当至少有一个切开的位置不同。

输入格式

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

对于每组测试数据:

第一行输入一个整数 nn

第二行输入一个长度为 nn 的数字串 ss

数据范围

对于所有测试数据,保证:

1T2×1051 \le T \le 2 \times 10^5 1n2×1051 \le n \le 2 \times 10^5 n2×105\sum n \le 2 \times 10^5

字符串 ss 仅由字符 09 组成。

注意:单个数字本身一定是合法校验块,因此答案一定存在。

输出格式

对于每组测试数据,输出一行两个整数,分别表示最少块数和最优切分方案数。

输入输出样例 #1

输入 #1

4
3
120
4
0000
10
1234567890
8
31415926

输出 #1

2 1
1 1
4 2
3 1

说明/提示

对于 120,唯一的最优切分是:

1 | 20

对于 0000,整个串 0000 是一个合法校验块,因此最少只需要切成 11 块。

对于 1234567890,有两种最优切分:

1 | 2 | 345678 | 90
123456 | 7 | 8 | 90

对于 31415926,唯一的最优切分是:

314159 | 2 | 6

【睿爸信奥】入门组算法周赛(20260606)

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-6-6 0:00
结束于
2026-6-13 0:00
持续时间
4 小时
主持人
参赛人数
22