当前位置: 首页 > 知识库问答 >
问题:

给定一个0-9的整数存量,在我用完某个整数之前,我能写的最后一个数字是多少?

黎鹤轩
2023-03-14

正如标题所说,给定一个0-9的整数,在我用完某个整数之前,我能写的最后一个数字是什么?

public class Numbers {

public static int numbers(int stock) {
    int[] t = new int[10];
    for (int k = 1; ; k++) {

        int x = k;
        while (x > 0) {

            if (t[x % 10] == stock) return k-1;
            t[x % 10]++;
            x /= 10;

        }

    }
}

public static void main(String[] args) {
    System.out.println(numbers(4));

}

}

有人能提出什么建议吗?多谢.

我已经提出并实现了一个有效的方法来找出数字的成本1...n感谢Btilly的指针(见他的帖子和评论下面。也标记为解决方案)。我将在今天晚些时候实现二进制搜索以找到给定股票的最后一个数字后进一步阐述这一点。

我已经完全忘记了这篇文章,所以我很抱歉没有在我的解决方案之前编辑。不过,我不会复制实际的实现。

9 9 9 9
^ ^ ^ ^
^ ^ ^ roof(9999 / 10^1) * 10^0 = 1000
^ ^ roof(9999 / 10^2) * 10^1 = 1000
^ roof(9999 / 10^3) * 10^2 = 1000
roof(9999 / 10^4) * 10^3 = 1000
2 5 6
^ ^ ^
^ ^ roof(256 / 10^1) * 10^0 = 26
^ roof(256 / 10^2) * 10^1 = 30
roof(256 / 10^3) * 10^2 = 100
sum = C(n, d)

if D(n, d) is 1:
    for each k < d, k >= 0 :
        sum -= ( 9 - D(n, k) ) * 10^(k-1);

else if D(n, d) is 0:
    sum -= 10^(d-1)

这样,程序将有效地计算出一个数字的正确成本。在这之后,我们简单地应用二分搜索来找到具有正确代价的数字。

共有1个答案

昝卓
2023-03-14

第一步。编写一个有效的函数来计算需要使用多少库存才能将所有数字写入n。(提示:用公式计算用于写出最后一位数字的所有内容,然后使用递归计算用于其他数字的所有内容。)

第2步。做一个二分搜索,找到最后一个数字,你可以写你的股票数量。

 类似资料:
  • 给定一个无序整数列表,以这种方式打印两个总计为的整数(int 1小于或等于int 2,它们之间用空格隔开)。假设整数列表中总是有的解。int1和int2必须是正整数。 如果有多个解决方案,请打印差异最小的整数对。 例子: 这是我的代码,但是根据我们的编译器(这是我们班的一个练习),我对隐藏的测试用例有错误的输出。 更新:代码工作!

  • 本文向大家介绍写一个方法判断一个数字是否为整数相关面试题,主要包含被问及写一个方法判断一个数字是否为整数时的应答技巧和注意事项,需要的朋友参考一下

  • 我试着写一个代码,它接受一个介于1和1_000_000之间的整数,并返回一个比相同数字的整数大的最小整数,如果它不存在,则打印0。 举个例子 输入:156 输出165 输入330 输出0 输入27711 输出71127 我的问题是,下面的代码没有为其他输入返回正确的输出。 例如,在输入4231中,输出应该是4312。 我很难找到为每个输入返回正确输出的最佳算法。 TNX提前 }

  • 以下是错误代码: 有谁能帮我解决我的问题吗?

  • 我正在解决这个问题,其中他们要求第一个1000位斐波那契数的索引,我的第一个想法类似于: 然而,据我所知,没有计算BigInteger的位数的方法。这是真的吗?绕开它的一种方法是使用。ToString()。一个BigInteger的长度方法,但我听说字符串处理很慢。 大整数也有一个。ToByteArray(),我曾想过将BigInteger转换为字节数组,并检查该数组的长度,但我认为这并不能唯一地

  • 代码应该得到第一个数字之后的数字的平均值,所以对于第一行[3 1 2 3],平均值是2.0,因为(1 2 3=6/3=2.0),但代码只给了我0。