# HackerEarth A beauty factor problem solution

In this HackerEarth A beauty factor problem solution you are given a positive integer n. The beauty factor of a number is the sum of digits obtained till the obtained sum is a single digit. you are given a beauty factor, b. your task is to find a minimum number (n) of length k whose beauty factor is b.

## HackerEarth A beauty factor problem solution.

`#include<bits/stdc++.h>#include<climits>using namespace std;bool check(vector<int> &a, int b) {	while (a.size() > 1) {		int sum = 0;		for (int i = 0; i < a.size(); i++) {			sum += a[i];		}		vector<int> b;		while (sum > 0) {			b.push_back(sum % 10);			sum /= 10;		}		a = b;	}	return a[0] == b;}int main() {	cin.tie(0);#ifndef ONLINE_JUDGE	freopen("input.txt", "r", stdin);	freopen("output.txt", "w" , stdout);#endif	int b , k;	cin >> b >> k;	string s = "123456789";	string ans = "9999999999";	for (int mask = 1; mask <= 512; mask++) {		vector<int> v;		for (int i = 0 ; i < 9; i++) {			if (mask & (1 << i)) {				v.push_back(s[i] - '0');			}		}		vector<int> temp = v;		if (v.size() == k && check(v, b)) {			string s1 = "";			for (int i = 0; i < temp.size(); i++) {				s1 += to_string(temp[i]);			}			ans = min(ans, s1);		}	}	if (ans == "9999999999") cout << "-1" << endl;	else cout << ans << endl;}`

### second solution

`#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e9, maxd = 10;char dp[maxn];int ans[maxd][maxd] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},{0, 19, 29, 12, 13, 14, 15, 16, 17, 18},{0, 127, 128, 129, 139, 149, 123, 124, 125, 126},{0, 1234, 1235, 1236, 1237, 1238, 1239, 1249, 1259, 1269},{0, 12349, 12359, 12369, 12379, 12389, 12345, 12346, 12347, 12348},{0, 123589, 123689, 123456, 123457, 123458, 123459, 123469, 123479, 123489},{0, 1234567, 1234568, 1234569, 1234579, 1234589, 1234689, 1234789, 1235789, 1236789},{0, 12345679, 12345689, 12345789, 12346789, 12356789, 12456789, 13456789, 23456789, 12345678},{0, 0, 0, 0, 0, 0, 0, 0, 0, 123456789}};int main(){    ios::sync_with_stdio(0), cin.tie(0);    int b, k;    cin >> b >> k;    cout << (ans[k][b] ? ans[k][b] : -1) << '\n';    return 0;    iota(dp, dp + 10, 0);    for(int i = 10; i < maxn; i++){        string s = to_string(i);        int su = accumulate(s.begin(), s.end(), 0) - '0' * s.size();        dp[i] = dp[su];        sort(s.begin(), s.end());        if(s[0] == '0' || unique(s.begin(), s.end()) != s.end())            continue;        if(!ans[s.size()][dp[i]])            ans[s.size()][dp[i]] = i;    }    for(int i = 0; i < maxd; i++){        cout << "{";        for(int j = 0; j < maxd; j++)            cout << ans[i][j] << ", ";        cout << "},\n";    }}`