在 C++ 中查詢新增數字 d 後可能的最小數字和
在這個問題中,我們給定兩個數字 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+l) 模 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<<"The minimum possible digitsum after adding the number is "<<findMinDigitSum(n, d);
return 0;
}輸出
The minimum possible digitsum after adding the number is 1
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP