清零
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
一个 N 位的二进制数,可能有前导 0。
现在你的任务是把这个数清零,即把所有位都变成 0。
首先,你指定一个整数 K。
然后,每次操作,你可以选择任意连续的 K 位全部取反,即把其中的 0 变成 1,1 变成 0。
注意,K 的值一旦指定后就不能发生变化,即每次操作你必须选择 K 位。
显然,你初始时指定的 K 值不同,可能导致你完成任务所操作的次数不同。
问:指定 K 为何值,可以使你的操作次数最少?输出最少操作次数,并输出 K 值。如果有多个 K 值,你只需要输出最小的那个 K。
Input
第一行:一个整数 N
第二行:一个 N 位的二进制数(可能有前导 0)
Output
一行,两个整数,分别表示最少操作次数和对应的最小的 K
输入样例
5
11011
输出样例
2 2
样例解释
最少操作 2 次,此时最小的 K=2,一种可能的操作方案如下:
11011 -> 00011
00011 -> 00000
虽然当 K=3 时,也可以完成任务,一种可能的操作方案如下:
11011 -> 00111
00111 -> 00000
但显然 K=2 更小。
数据范围
30% 的数据:1 ≤ N ≤ 10
60% 的数据:1 ≤ N ≤ 1000
100% 的数据:1 ≤ N ≤ 5000