এই সমস্যায়, আমাদের n এবং d দুটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল d যোগ করার পর ন্যূনতম সম্ভাব্য অঙ্কের যোগফল বের করা।
সমস্যা বর্ণনা − আমাদের n-এর সাথে d-এর kth গুণফল যোগ করে অঙ্কের যোগফলকে ছোট করতে হবে।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
n = 5230, d = 54
আউটপুট
1
ব্যাখ্যা
The number will be 5230 + (2*54) = 5338
সমাধান পদ্ধতি
সমস্যা সমাধানের একটি সহজ পদ্ধতি হল 1 থেকে 8 পর্যন্ত d-এর সমস্ত গুণিতক পরীক্ষা করা, কারণ 9ম গুণে অঙ্কের যোগফল পুনরাবৃত্তি হবে। এটি মডুলো 9 এর উপর ভিত্তি করে, যা অঙ্কের যোগফল প্রদান করবে। সুতরাং, a+d*(9k+l) modulo 9 হল a+d*l modulo 9 এর সমতুল্য। তাই আমরা 1 থেকে 8 পর্যন্ত l*d-এর সমস্ত গুণিতক পরীক্ষা করব এবং ন্যূনতম যেটি পাওয়া গেছে তা ফেরত দেব।
প্রোগ্রামে একটি অগ্রগতি এই সত্যটি ব্যবহার করে করা যেতে পারে যে অঙ্কের যোগফল কখনই 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