给定一定数量,说t = 10.我们的任务是找到最小正整数,使其数字之和等于10.在这个例子中,最小整数是19(1 + 9 = 10)。
我提出了以下解决方案:
我想我们绝对可以使用搜索来解决这个问题。对于上面的例子,t = 10表示一位数字(1-9)不起作用,我们只是从第一个2位正整数开始,然后逐步搜索,直到找到正确答案为19
开始搜索点有一个通用公式。
因此,给定t = 10,我们可以使用t / 9 + 1来知道起始搜索号应该是两位数。最小的两位数字是10。
我的问题是线性搜索有点费时。还有吗? 有效的方法来解决这个问题?或者甚至有任何通用的公式 这个问题?
尽可能使用9,然后将余数放在前面。
感谢Teepeemm和John Coleman。
例如:t = 25,25 = 9 + 9 + 7。将7放在两个9前面以产生 整数799。
答案 0 :(得分:2)
解决方案是使用尽可能多的9,然后将其余部分放在前面。这使得余数(答案的前导数字)尽可能小,并使用尽可能少的数字。在伪代码中:
W_i >= 0
答案 1 :(得分:0)
我找到了一个通用公式,可以找到数字加起来为 S 且具有 M 个数字的最小数字。这是它的python实现:
data.sort((a,b) => a.newOne === b.newOne ? 0 : a.newOne ? -1 : 1)
如有任何疑问,请在下面评论。
答案 2 :(得分:0)
int t1=pc/9;
if(pc%9!=0)
{
t1++;
}
int t2=pr/9;
if(pr%9!=0){
t2++;
}