登录
|
注册
公司
标签
文章
搜索
经典指数
百度
复杂度
类别
公司
职位
年份
其他
添加
原因
删除
1412
浏览数
0
收藏数
给定任意一个正整数,求比这个数大且最小的“不重复数”的含义是相邻两位不相同,例如1101是重复数,1231是不重复数?
还没有评论
分享到:
举报
纠错
0
/
512字
选择纠错区域
题目内容有错
题目标签有错
提交纠错
切换
提交评论
请先
登录
后评论.
1 个答案
0
0
#include
#include
using namespace std; int main() { int i = 0; char c = 0; long num = 0; cin >> num; string strNum = std::to_string(num+1); int nHightLength = strNum.length(); do { //查找相邻的重复数 i = 0; do { c = strNum[i]; } while (++i < nHightLength && c != strNum[i]); //在高位遍历 //有重复位数,截取高位加1,替换原有的高位 if (i != nHightLength) { string substr = strNum.substr(0, i+1); //截取存在重复的高位 nHightLength = substr.length(); long nHignt = stol(substr) + 1; //加1 strNum.replace(strNum.begin(), strNum.begin() + i + 1, std::to_string(nHignt)); } } while (i != nHightLength); //如果循环中有重复,则再次循环,如99+1=100出现了两个0 //尾部填充0或1,判断填充前高位的最后一个是0还是1 bool change = strNum[nHightLength - 1] - '0'; for (int i = nHightLength; i < strNum.length(); ++i, change = !change) { strNum[i] = change ? '0' : '1'; } cout << strNum << endl; system("pause"); return 0; }
还没有评论
举报
切换
提交评论
请先
登录
后评论.
撰写答案
提交回答
通往牛逼的路上,请先登录!
扫描后移动端查看本题
我也分享一个题目
相关题目
给一个定义:对一个整数,若其中存在相邻两位上的数字相同,则称其为 ...
给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指 ...
给定一个k位整数N = dk-1 *10k-1 + ... + ...
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新 ...
给定整数x,定义函数A(n)=1+x+x2+x3+…+xn(n为 ...
给定100亿个整数,设计算法找到只出现一次的整数
请编程计算第K个能表示为2i * 3j * 5k的正整数,(其中 ...
给定一个整数的数组,相邻的数不能同时选,求从该数组选取若干整数, ...
快速求取一个整数的7倍。
有一个非负整数,请编写一个算法,打印该整数的英文描述。 给定一个 ...
×
登录
注册
找回密码
记住登录
登录
快速注册
直接第三方登录
×
保存答案