Codeforces 991

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)\)

猜你喜欢

转载自www.cnblogs.com/BlogOfchc1234567890/p/10322993.html