![Trending Articles on Technical and Non Technical topics](/images/trending_categories.jpeg)
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Convert a number of length N such that it contains any one digit at least 'K' times in C++
In this tutorial, we will be discussing a program to convert a number of length N such that it contains any one digit at least ‘K’ times.
For this we will be provided with a number of given length N. Our task is to convert the digits in the given number such that any one digit gets repeated at least ‘K’ times. Also, you have to calculate the cost of this operation which is the absolute difference between the two and finally print the minimum cost.
Example
#include <bits/stdc++.h> using namespace std; //calculating the minimum value and final number int get_final(int n, int k, string a){ int modtemp; //count of numbers changed to k int co; string temp; //storing the minimum cost pair<int, string> ans = make_pair(INT_MAX, ""); for (int i = 0; i < 10; i++) { temp = a; //storing the temporary modified number 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++; } } } } //replacing the minimum cost with the previous one 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; }
Output
1 21222
Advertisements