CSU-ACM2017暑假集训比赛7
来源:互联网 发布:淘宝卖家刷一单10元 编辑:程序博客网 时间:2024/06/05 02:24
F - 凑数字
给定一个n,要求找出一个最短的字符串S,使得所有1到n的整数都是S的子序列。比如n=10,那么S=”1234056789”的时候,是满足条件的。这个时候S的长度是10。现在给出一个n,要求输出最短S的长度。
Input
第1行:给出一个整数n (1<=n<=1e10000)。
Output
输出最短S的长度
Sample Input
10
Sample Output
10
首先一定要明确“子序列”的意义,然后就容易想到,将一个数的位数减一,得到的就是表达除最高位外所有低位数字所需要的字符串“1234567890”的个数。
重要的是最高位如何处理。举一组例子:取四位数
首先考虑
可是,这种规律在数字
再看数字
现在可以将上述规律推广到一般情况:
设给定的数字位数为
#include <string>#include <iostream>#include <algorithm>using namespace std;int main(){#ifdef TESTfreopen("test.txt", "r", stdin);#endif // TEST string sample; while(cin >> sample){ int cnt = 0, len = sample.length(); cnt += (len - 1)*10; cnt += sample[0]-'1'; bool add = true; for(int i = 1; i < len; i++){ if(sample[i] < sample[i-1]){ add = false; break; } else if(sample[i] > sample[i-1]) break; } if(add) cnt++; cout << cnt << endl; } return 0;}
- CSU-ACM2017暑假集训比赛7 A
- CSU-ACM2017暑假集训比赛7 B
- CSU-ACM2017暑假集训比赛7 C
- CSU-ACM2017暑假集训比赛7
- CSU-ACM2017暑假集训比赛7
- CSU-ACM2017暑假集训比赛7
- CSU-ACM2017暑假集训比赛1 C
- CSU-ACM2017暑假集训比赛1 B
- CSU-ACM2017暑假集训比赛1 A
- CSU-ACM2017暑假集训比赛1 C
- CSU-ACM2017暑假集训比赛1 C
- CSU-ACM2017暑假集训比赛2 C
- CSU-ACM2017暑假集训比赛2 D
- CSU-ACM2017暑假集训比赛2 B
- CSU-ACM2017暑假集训比赛2 A
- CSU-ACM2017暑假集训比赛2 E
- CSU-ACM2017暑假集训比赛2 HDU
- CSU-ACM2017暑假集训比赛2 CodeForces
- PyQT_笔记
- 电话号码
- 寻找多数元素
- git常用命令速查表
- Python中字符串的操作
- CSU-ACM2017暑假集训比赛7
- 使用tweepy爬twitter图片
- 定义一个方法找出输入的三个整数的最大值
- 【POJ
- HDU6147 Pokémon GO II (2017百度之星程序设计大赛
- block块的用法
- Spring配置mybatis
- HDU 2448 Mining Station on the Sea(Floyd+最优匹配)
- linux awk使用