http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3780

题目大意:

给你一个正整数x,要求每个数字上的总和和x相同且比x大的最小整数。

如x=12 答案为21  x=10 答案为100

思路:

因为要比x大的最小,我们很自然的想到个位-1十位+1不就可以了。但是要注意如果是0的话,0-1变为9那么是不行的!而9+1的话变为0也是不行的。

最个位开始查找,找第一个不为0的数-1(不为0的下标为not_zero),在not_zero往高位找到第一个不为9的个数+1,(这样保证了比x大)然后在9+1的这里往后排个序保证最小。

为什么要排序?如x=520那么按照上面的就会变为610 而答案应该为601

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=1024;
char s[MAXN];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
s[0]='0';
scanf("%s",s+1);
int len=strlen(s);
int not_zero=len-1;
while(s[not_zero]=='0')
not_zero--;
s[not_zero]--; int not_nine=not_zero-1;
while(s[not_nine]=='9')
not_nine--;
s[not_nine]++; sort(s+not_nine+1,s+len); if(s[0]=='0')
printf("%s\n",s+1);
else
printf("%s\n",s); }
return 0;
}

最新文章

  1. linux基本知识2
  2. 关于lambda表达式的一些学习——基于谓词筛选值序列
  3. Java [leetcode 35]Search Insert Position
  4. (2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度
  5. Hibernate、批量操作数据
  6. 【转】Pjax是什么以及为什么推荐大家用
  7. pygame系列_draw游戏画图
  8. 基于VLC的视频播放器
  9. JavaScript里的依赖注入
  10. html5权威指南:嵌入另一张HTML文档、通过插件嵌入内容、嵌入数字表现形式
  11. 利用Java随机,生成随机学生数据
  12. C#用SerialPort实现串口通讯
  13. 2017-07-07(zip unzip gzip gunzip)
  14. 《Thinking in Java》学习笔记(二)
  15. Java进阶(十九)利用正则表达式批处理含链接内容文档
  16. WPF:TreeView绑定
  17. jQuery为div添加select和option
  18. centos网络yum源的安装
  19. 前端 HTML form表单标签 input标签 type属性 重置按钮 reset
  20. unity, shader中获得当前像素深度

热门文章

  1. Android SecurityException
  2. c# Dictionary
  3. 二分图简单概念&amp;&amp;HDU 2063
  4. CSS 文本样式
  5. 压状态bfs
  6. android-pulltorefresh 下拉载入中使用gif动图
  7. Qt样式表——选择器详解(父子关系)
  8. malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
  9. 停止使用域名 boypay.net
  10. Vue Invalid handler for event &quot;&quot;: got undefined