Link: https://leetcode.com/problems/partition-string-into-minimum-beautiful-substrings/description/
## 思路
基本型II dp
If ```s[i]```, ```s[i+1]```..```s[j]``` is pow of 5,
then ```dp[j+1] = min(dp[j+1], dp[i]+1)```
where ```dp[j]``` means the minimum partition for ```j``` first letters.
要注意他找的是pow of 5 而不是5的倍数
因此不能用```cur%5==0```检查
由于15625是15位binary string能表示的最大的power of 5
因此我们用```15625%cur==0```检查
## Code
```python=
class Solution:
def minimumBeautifulSubstrings(self, s: str) -> int:
n = len(s)
dp = [0]+[inf]*n
for i in range(n):
if s[i]=='1':
cur = 0
for j in range(i, n):
cur = cur*2+int(s[j])
if 15625 % cur == 0:
dp[j+1] = min(dp[j+1], dp[i]+1)
return dp[n] if dp[n]<inf else -1
```