2018年3月美团春招笔试题 数字字符

举报
用户已注销 发表于 2021/11/19 04:52:18 2021/11/19
【摘要】 题目: 数字字符 时间限制:C/C++语言 2000MS;其他语言 4000MS内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 在十进制表示中,任意一个正整数都可以用字符‘0’-‘9’表示出来。但是当‘0’-‘9’这些字符每种字符的数量有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’ ,一个...

题目:

数字字符

时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

在十进制表示中,任意一个正整数都可以用字符‘0’-‘9’表示出来。但是当‘0’-‘9’这些字符每种字符的数量有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’ ,一个‘2’ ,那么你能表示出 1112121 等等,但是无法表示出 10122200 等数。

现在你手上拥有一些字符,它们都是‘0’-‘9’的字符。你可以选出其中一些字符然后将它们组合成一个数字,那么你所无法组成的最小的正整数是多少?

输入

第一行包含一个由字符’0’-‘9’组成的字符串,表示你可以使用的字符。

· 1 ≤字符串长度≤ 1000

输出

输出你所无法组成的最小正整数。

样例输入

55

样例输出

1

Hint

Input Sample 2

123456789

Output Sample 2

10


思路:

贪心

最后的答案要不就是10^n的形式,要不就是每一位都是相同的数字。

代码:


  
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. int main()
  5. {
  6. char c[1001];
  7. int su = 0, num[10];
  8. for (int i = 0; i < 10; i++)num[i] = 0;
  9. cin >> c;
  10. int len = strlen(c);
  11. for (int i = 0; i < len; i++)num[c[i] - '0']++;
  12. for (int i = 1; i <= 9; i++)if (!num[i])
  13. {
  14. cout << i;
  15. return 0;
  16. }
  17. if (!num[0])
  18. {
  19. cout << 1 << 0;
  20. return 0;
  21. }
  22. int minn = 10000;
  23. for (int i = 0; i <= 9; i++)if (minn > num[i])minn = num[i];
  24. for (int i = 1; i <= 9; i++)if (num[i] == minn)
  25. {
  26. while (minn--)cout << i ;
  27. cout << i;
  28. return 0;
  29. }
  30. cout << 1;
  31. while (minn--)cout << 0;
  32. cout << 0;
  33. return 0;
  34. }

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/79660632

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。