zoukankan      html  css  js  c++  java
  • (笔试题)最小的非“重复的数”

    题目:

    给一个定义:对一个整数,若其中存在相邻两位上的数字相同,则称其为“重复的数”;现给定一个正整数n,求不小于n的最小的非“重复的数”。

    思路:

    假设输入的数为n,则令m=n,

    分别取m的最低两位数字a,b,

    判断是否a==b,如果是说明是重复的数,那么递归调用n=m+1;考虑特殊情况,ab=99,产生进位后100仍未重复数,此时应该递归调用n=m+2;

    如果a!=b,则往前挪一位,即m=m/10,直至m/10=0为止,最后返回n。

    该思路也可以通过非递归来实现,详见代码。

    代码:

    #include <iostream>
    
    using namespace std;
    
    int calNonRepetitionNum(int n){
        if(n<10)
            return n+1;
    
        int a,b;
        int base=1;
        int m=n;
    
        while(m/10)
        {
            b=m%10;
            a=m/10%10;
            base*=10;
    
            if(a==b)
            {
                if(a==9)
                    return calNonRepetitionNum((m+2)*base/10);
                else
                    return calNonRepetitionNum((m+1)*base/10);
            }
            m/=10;
        }
    
        return n;
    }
    
    int calNonRepetitionNum_2(int n){
        if(n<10)
            return n+1;
        int a,b,m;
        int base;
        bool flag=true;
        while(flag){
            flag=false;
            m=n;
            base=1;
            while(m/10){
                a=m%10;
                b=m/10%10;
                base*=10;
                if(a==b){
                    if(a==9){
                        n=(m+2)*base/10;
                        flag=true;
                        break;
                    }
                    else{
                        n=(m+1)*base/10;
                        flag=true;
                        break;
                    }
                }
                m=m/10;
            }
        }
        return n;
    }
    
    int main()
    {
        cout << calNonRepetitionNum(99) << endl;
        cout << calNonRepetitionNum_2(88) << endl;
        return 0;
    }
    

      

  • 相关阅读:
    kubectl 命令详解
    codeforce344 C report
    poj3041 建图+最小顶点覆盖(最大匹配数)
    poj1637 混合欧拉回路的判定
    poj1149 最大流好题 难在建图 好题
    targan 算法模板
    poj2186 强连通分量 targan算法的应用
    poj2723 2分 + 2-sat
    poj3061 尺取法
    poj3207 2-sat基础题
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4740885.html
Copyright © 2011-2022 走看看