在这个问题上,我们给了两个数字n和d。我们的任务是在添加数字d之后找到最小可能的数字总和。
问题描述-我们需要通过将d的k倍加到n来最小化数字总和。
让我们举个例子来了解这个问题,
n = 5230, d = 54输出结果
1
The number will be 5230 + (2*54) = 5338
解决该问题的一种简单方法是检查d的所有1到8的所有倍数,因为在9的倍数处,数字的总和将重复。这基于模9,它将返回数字总和。因此,a + d *(9k + 1)模9等于a + d * l模9。因此,我们将检查l * d从1到8的所有倍数,并返回找到的最小值。
程序的进步可以利用以下事实来实现:数字总和永远不会小于1,因此如果我们使数字总和= 1,我们将返回它。
该程序说明了我们解决方案的工作原理,
#include <iostream> using namespace std; int calcDigitSum(int n) { int i = n % 9; if (i == 0) return 9; else return i; } int findMinDigitSum(int n, int d) { int minSum = 10; int number; for (int i = 1; i < 9; i++) { number = (n + i * d); minSum = min(minSum, calcDigitSum(number)); if(minSum == 1) return minSum; } return minSum; } int main() { int n = 5230, d = 54; cout<<"加号后的最小可能数字总和为 "<<findMinDigitSum(n, d); return 0; }输出结果
加号后的最小可能数字总和为 1