首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数字递增测试

数字递增测试
EN

Stack Overflow用户
提问于 2012-10-30 15:15:32
回答 9查看 3.4K关注 0票数 13

如果一个数等于n+ nn + nnn + ...对于1到9之间的某个数字n。例如,24是数字递增的,因为它等于2+ 22 (这里n= 2)。

实际上,我的一个朋友问了我这个问题,我一直在思考这个问题,但到目前为止还找不到确切的解决方案。有人能帮上忙吗?我需要一个函数,如果它是数字递增的,则返回true,否则返回false。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-10-30 17:51:52

我就是这样做的。退房一次。

代码语言:javascript
复制
int sum = 0, count =0;
bool flag = false;

public bool isDigitIncreasing(int input_number)
{
int  n= get_number_of_digit(input_number); // Gets number of digits
int sum = 0;
    for(int i=0;i<n;i++)
    {
        sum = sum*10+1;
        count = count + sum;
    }

    for(int i=1; i<=9;i++)
    {
        if((input_number)==count*i)
        {
            flag = true;
            break;
        }
        else
        flag = false;
    }
    return flag;

}

    public int get_number_of_digit(int num)
    {

        int size = 0;
        do
        {
            num = num/10;
            size++;
        }while(num>0);
        return size;
    }
票数 1
EN

Stack Overflow用户

发布于 2012-10-30 17:14:59

简单的穷举搜索将会起作用。

代码语言:javascript
复制
def is_digit_increasing_number(x):
    # n = 1, 1+11, 1+11+111, ...
    n = 1
    i = 1
    while n <= x:
        if x % n == 0 and n * 10 > x:
            return True
        i += 1
        n = n * 10 + i
    return False
票数 2
EN

Stack Overflow用户

发布于 2012-10-30 17:17:26

最简单的方法是做加法(自下而上),我将使用简单的for循环:

代码语言:javascript
复制
List<int> numbersSum = new List<int>{1,2,3,4,5,6,7,8,9};
List<int> lastNumber = new List<int>{1,2,3,4,5,6,7,8,9};
for(int i=0;i<= lg n + 1;i++)
{

   for(int j=0;j<9;j++)
   {
      if(list[j] < n)
      {
          var lastNumberJ = lastNumber[j]*10+j+1;
          list[j] += lastNumberJ; // add numbers to see will be same as n.
          if (list[j] == n)
            return j+1;
          lastNumber[j] = lastNumberJ;
      }
   }   
}

return -1;

重要的是你只需要最多的log n迭代,而且如果所有的数字都大于给定的数字,你可以更快地返回,这就是O(log n)算法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13134310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档