给定一个n,要求找出一个最短的字符串S,使得所有1到n的整数都是S的子序列。
比如n=10,那么S=”1234056789”的时候,是满足条件的。这个时候S的长度是10。
现在给出一个n,要求输出最短S的长度。
Input
第1行:给出一个整数n (1<=n<=1e10000)。
Output
输出最短S的长度
Input示例
10
Output示例
10#include <iostream> #include <math.h> #include <string.h> using namespace std; const int MAXN = 1e4 + 10; char n[MAXN]; int main() { cin >> n; int result = 0; int len = strlen(n); result = (len - 1) * 10; result += n[0] - '1'; bool flag = true; for (int i = 1; i < len; i++) { if (n[i - 1] > n[i]) { flag = false; break; } else if (n[i - 1] < n[i]) { break; } } if (flag) { result += 1; } cout << result << endl; return 0; }