#include using namespace std; ifstream cin("7segmente.in"); ofstream cout("7segmente.out"); string n; int v[] = {0, 2, 5, 5, 4, 5, 6, 3, 7, 6}; int c1(string n) { int sol = 0; for(char c : n) sol+=v[(c-'0')%10]; return sol; } int main() { long long p, len; cin >> n >> p; cout << c1(n) << ' '; len = n.length(); /// Acum cerinta 2. /// Cel mai mare numar care foloseste mai putin de p si <=n /// Prioritati // 1) Numarul de cifre. // 2) Cifra cea mai semnificativa sa fie mai mica sau egala cu cea a lui n. /// Daca nu putem avea la fel de mult cifre ca n if(p / 2 < len) { /// Prin acestea asiguram numarul cu cat mai multe cifre de valoare maxima! /// Daca putem, inlocuim primul '1' cu '7'. if(p%2==1) cout << 7, p-=3; // 3 mW for(int i = 1;i<=p/2;i++) cout << 1; // 2 mW. } else { string sol = ""; for(int i = 0;i= v[j]) added = j + '0'; } p = p + 2 - v[(added - '0')]; /// nu mai folosim 1 si folosim cifra added. sol[i] = added; } else { for(int j = 1;j <= (n[i] - '0');j++) { if(p + 2 >= v[j]) added = j+'0'; } if(added!= n[i]) maximum = false; p = p + 2 - v[(added-'0')]; sol[i] = added; } } cout << sol; } return 0; }