এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম নিয়ে আলোচনা করব যা N দৈর্ঘ্যের একটি সংখ্যাকে এমনভাবে রূপান্তর করে যাতে অন্তত 'K' বার একই ডিজিট থাকে।
এখানে আমাদের একটি নির্দিষ্ট দৈর্ঘ্য N-এর একটি সংখ্যা দেওয়া থাকবে। আমাদের কাজ হলো দেওয়া সংখ্যার ডিজিটগুলো রূপান্তর করা যাতে যেকোনো একটি ডিজিট কমপক্ষে 'K' বার রিপিট হয়। এছাড়া এই অপারেশনের খরচ বের করতে হবে যা হলো দুটি মানের tuyệtত পার্থক্য (absolute difference) এবং সর্বনিম্ন খরচ প্রিন্ট করতে হবে।
উদাহরণ
#include <bits/stdc++.h> using namespace std; //সর্বনিম্ন মান এবং চূড়ান্ত সংখ্যা ক্যালকুলেট করা int get_final(int n, int k, string a){ int modtemp; //k-এ পরিবর্তন করা সংখ্যার কাউন্ট int co; string temp; //সর্বনিম্ন খরচ সংরক্ষণ pair<int, string> ans = make_pair(INT_MAX, ""); for (int i = 0; i < 10; i++) { temp = a; //সংশোধিত সংখ্যা অস্থায়ীভাবে সংরক্ষণ modtemp = 0; co = count(a.begin(), a.end(), i + '0'); for (int j = 1; j < 10; j++) { if (i + j < 10) { for (int p = 0; p < n; p++) { if (co <= k) break; if (i + '0' == temp[p] - j) { temp[p] = i + '0'; modtemp += j; co++; } } } if (i - j >= 0) { for (int p = n - 1; p >= 0; p--) { if (co >= k) break; if (i + '0' == temp[p] + j) { temp[p] = i + '0'; modtemp += j; co++; } } } } //পূর্বের সাথে সর্বনিম্ন খরচ রিপ্লেস করা ans = min(ans, make_pair(modtemp, temp)); } cout << ans.first << endl << ans.second << endl; } int main(){ int n = 5, k = 4; string a = "21122"; get_final(n, k, a); return 0; }আউটপুট
1 21222