এই সমস্যায়, আমাদের দুটি সংখ্যা n এবং d দেওয়া আছে। আমাদের কাজ হলো একটি সংখ্যা d যোগ করার পর ন্যূনতম সম্ভাব্য অঙ্কের যোগফল খুঁজে বের করা।
সমস্যা বিবরণ
আমাদের d-এর k-এন্টিমoltip gুণফল n-এ যোগ করে অঙ্কের যোগফল ন্যূনতম করতে হবে।
উদাহরণ
ইনপুট
n = 5230, d = 54
আউটপুট
1
ব্যাখ্যা
সংখ্যাটি হবে 5230 + (2*54) = 5338
সমাধানের পদ্ধতি
সমস্যাটি সমাধানের একটি সহজ পদ্ধতি হলো ১ থেকে ৮ পর্যন্ত d-এর সব গুণফল চেক করা, কারণ ৯ম গুণফলে অঙ্কের যোগফল পুনরাবৃত্তি হয়। এটি মডুলো ৯-র ওপর ভিত্তি করে যা অঙ্কের যোগফল ফেরত দেয়। তাই a+d*(9k+l) মডুলো ৯, a+d*l মডুলো ৯-র সমতুল্য। অতএব আমরা l*d-এর সব গুণফল ১ থেকে ৮ পর্যন্ত চেক করব এবং ন্যূনতমটি ফেরত দিব।
প্রোগ্রামে একটি উন্নতি করা যায় এই তথ্য ব্যবহার করে যে অঙ্কের যোগফল কখনো ১-এর চেয়ে কম হয় না, তাই যদি অঙ্কের যোগফল ১ পাওয়া যায়, তবে সেটি অবিলম্বে ফেরত দিয়ে দেওয়া যায়।
C++ প্রোগ্রাম উদাহরণ
#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