题目描述
有一个蛋糕,它是由长度是L的二进制组成的。现在需要把蛋糕切K-1刀,这样蛋糕就会被切成K份,每一份蛋糕其实就是一段连续的二进制,而且每一份蛋糕的二进制不能有前导0。小LW今年5岁了,所以她希望把每一份蛋糕的二进制转为十进制之后,都是5的幂,即可以表示成5^X,其中X是整数。求满足题意的最小的正整数K。如果无法完成任务,输出-1。
输入格式
多组测试数据。
第一行,一个整数R,表示有R组测试数据。 1 <= R <= 25。
每组测试数据格式如下:
第一行,一个整数L。 1 <= L <= 50。
第二行,L个二进制数字,0或者1。
输出格式
共R行,每行一个整数。
输入/输出例子1
输入:
11
9
101101101
7
1111101
5
00000
9
110011011
10
1000101011
27
111011100110101100101110111
49
1101100011010111001001101011011100010111011110101
4
0101
4
1001
50
11111111111111111111111111111111111111111111111111
14
10111001110011
输出:
3
1
-1
3
-1
5
1
-1
-1
50
4
样例解释
无
题目来源
思路
详细的地方看注释吧o(╥﹏╥)o,这道题感觉自己暴力了一波,但是为什么题目发布者把它放进递推里面。。。
这里大致说一下:
首先为了省一些时间,直接就打了一个5的n次幂的二进制串,注意任何非零数的0次幂等于1!
然后你要做的就是从左往右找,假如第一刀都切不上去,那自然就可以返回-1了,可以的话先切一刀,剩下的字符串再继续递归,可能出现多种情况,所以要扫一遍取ans。
然后输出答案。。。(允许我水一行字数)
然后就没了。
完整代码
标签:输出,题目,二进制,整数,测试数据,蛋糕 From: https://www.cnblogs.com/cytxzgbp/p/cake.html