给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。
来源:互联网 发布:mysql容量限制 编辑:程序博客网 时间:2024/05/16 06:51
/* *给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相 *等的两个相邻位故不是不重复数,而12301是不重复数。 */#include <stdio.h>unsigned int solve(unsigned int k); unsigned int testify(unsigned int k);intmain(void){unsigned int num;while (1) {scanf("%d", &num);if (num == 0)break;printf("->");solve(num);}/*testify*/for ( num = 1; num < 111111; ++num) {if (solve(num) != testify(num)) {printf("num = %u, solve = %u, testify = %u\n", num, solve(num), testify(num));break;}}return 0;}intis_num(unsigned int k) {if (k < 11)return 1;int first = k % 10;int second;k = k / 10;while (k) {second = k % 10;if (second == first)return 0;first = second;k = k / 10;}return 1;}unsigned intsolve(unsigned int k){char str[100];int start, end, mark;if (k == 0 || k == (unsigned int)-1)return;++k;if (is_num(k)) {printf("%d\n", k);return k;}sprintf(str + 1, "%d", k);start = 1;end = 2;while (str[end] != '\0') {if (str[end] == str[end -1]) {if (str[end] == '9') {str[end - 1] = str[end] = '0';if (end == 2) {start = 0;str[0] = '1';mark = 1;break;} str[end - 2] = str[end - 2] + 1;end -= 2;} else {str[end] = str[end] + 1;mark = end +1;break;}} else {++end;}}/*返回整数是为了下面的验证*/k = 0;for( ; start != mark; ++start) {printf("%c", str[start]);k = 10 * k + str[start] - '0';}while (str[start++] != '\0') {printf("%c", '0');k = 10 * k;if (str[start++] != '\0') {printf("%c", '1');k = 10 * k + 1;}elsebreak;}printf("\n");return k;}unsigned inttestify(unsigned int k){while (!is_num(++k));return k;}
0 0
- 给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。
- 给定任意一个正整数,求比这个数大且最小的不重复数,“不重复数”的含义是相邻两位不同(java写的)
- 百度笔试:求大于n的最小的不重复数,不重复数是指相邻两个数不相同
- 给定任意一个正整数,求比这个数大且最小的“不重复数”
- 给定任意一个正整数,求比这个数大且最小的“不重复数”
- 求比给定正整数N的最小不重复数(度娘)
- 程序设计题--给定任意一个正整数,求比这个数大且最小的“不重复数
- (百度笔试题)给定任意一个正整数,求比这个数大且最小的“不重复数”。
- 百度面试题 求比N大的最小“不重复数”
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”[2014百度笔试题]
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 随机生成给定范围内N个不重复的数
- 求给定数的最大“不重复数”
- 算法:求比指定数大且最小的“不重复数”问题的高效实现
- 求数组中不重复的两个数
- 查找最大的不重复数,查找大于给定数字的最小不重复数
- [经典面试题][百度]求比指定数大且最小的“不重复数”
- 查找大于一正整数的最小的不重复数
- Linux 系统目录结构
- 工厂模式和抽象工厂模式-设计模式
- c++空类实例大小不是0原因
- 【JAVA】重写和重载
- [LeetCode]*85.Maximal Rectangle
- 给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。
- 将数据写入文件
- 查找序列中第二大的元素
- Dynamics CRM2013/2015 Plugin注册工具Register New Assembly时无法看到注册按钮的解决办法
- Android如何查看应用签名信息--微信平台开发应用的签名
- Twemproxy: Download & Install & Config & Start
- JVM研究
- windows环境下搭建spark
- Python:[转] 字符串大小写的转换