给定一个数字,假设 t = 10。我们的任务是找到最小的正整数,使其数字之和等于 10。在这个例子中,最小整数是 19 (1+9=10)。
我想出了以下解决方案:
我想我们肯定可以使用搜索来解决这个问题。对于上面的例子,t = 10 意味着一位数(1-9)不能成立,我们就从第一个 2 位正整数 10 开始,然后逐步查找,直到找到正确答案 19 .
起始搜索点有一个通用公式。
所以给定 t = 10,我们可以使用 t/9 + 1 知道起始搜索编号应该是两位数。最小两位数是 10。
我的问题是线性搜索有点耗时。还有吗 解决这个问题的有效方法是什么?或者是否有任何通用公式 这个问题?
尽量用9,然后把剩下的放在前面。
感谢蒂皮姆和约翰·科尔曼。
例如:t = 25, 25 = 9+9+7。将7放在两个9前面生成 整数 799。
解决办法是尽可能多地使用9,然后将余数放在前面。这使得余数(答案的前导数字)尽可能小,并使用尽可能少的数字。伪代码:
string( input % 9 ) + stringMult( '9', input/9 );
我找到了一个通用公式来查找数字总和为 S 并且有 M 位的最小数字。这是它的 python 实现:
def bla(M,S):
n=(S+7)//9
sl=9*n -7
c=10**(n-1)
b=10**(M-1)
p=int((2+S-sl)*c -1)
return p+b
如有疑问请在下方评论。
int t1=pc/9;
if(pc%9!=0)
{
t1++;
}
int t2=pr/9;
if(pr%9!=0){
t2++;
}
HomeC 编写一个 C 程序来求一个正整数的数字之和。 2024 年 4 月 8 日 0
问题陈述:
编写一个 C 程序来求正整数的数字之和。
要求:
程序应提示用户输入正整数。 它应该计算并显示输入数字的数字总和。 例如,如果输入为 123,则其数字之和将为 1 + 2 + 3 = 6。 该程序应处理单位数和多位正整数。
https://ragultechnology.blogspot.com/2024/04/write-c-program-to-find-sum-of-digits.html