991 F
题意
给一个 \(\le 10^{10}\) 的正整数,使用'0'~'9','+','*','^'//乘方
字符表示这个数。求表示方法所形成的字符串长度最小的一种。
Examples
Input
2018
Output
2018
Input
1000000007
Output
10^9+7
Input
10000000000
Output
100^5
Input
2000000000
Output
2*10^9
解
首先,仅用'+','*'
不能减小长度。
其次,乘方的底数必然 \(\le \sqrt{n}\) 。
再次,所有的数最多只能表示为 \(a^b*c^d+e^f\) 的形式。
于是,brute force枚举所有情况即可。中间可以用一些小小的优化,如二分。
复杂度\(O(玄学)≈O(\sqrt{n}\log n)\)。