Problema de pe pbinfo 1045:
Cif-Oji6 este o imprimantă matriceală numită şi imprimantă cu ace, deoarece tipărirea se realizează prin impactul acelor capului de imprimare pe o bandă cu tuş.
Acele sunt aranjate într-o grilă dreptunghiulară formată din 5 rânduri de ace, pe fiecare rând aflându-se la distanţe egale câte 3 ace, aşa cum se observă în figura alăturată.
Prin acţionarea diferitelor combinaţii de ace din grilă, se defineşte forma fiecărei cifre ce permite tipărirea acesteia prin puncte, în felul următor:
De exemplu, cifra 2 va fi tipărită prin 11 puncte ca rezultat al acţionării a 11 ace din grilă: din primul rând de ace al grilei se vor acţiona toate cele 3 ace, din următorul rând doar acul din dreapta, apoi de pe următorul rând toate cele 3 ace, apoi acul din stânga de pe penultimul rând iar din ultimul rând toate cele 3 ace.
Cerințe:
a) Ştiind că imprimanta Cif-Oji6 a tipărit numărul N, determinaţi care este cea mai mare cifră a numărul N pentru care s-a acţionat un număr minim de ace ale grilei.
b) Ştiind că imprimanta mai are tuş pe bandă doar pentru imprimarea a K puncte, determinaţi cel mai mare număr natural ce poate fi tipărit prin exact K puncte.
Date de intrare:
Fișierul de intrare imprimanta.in conține pe prima linie două numere naturale N şi K separate printr-un spaţiu, unde N reprezintă numărul tipărit de imprimantă iar K numărul de puncte pentru care imprimanta mai are tuş.
Date de ieșire:
Fișierul de ieșire imprimanta.out va conține:

pe prima linie un singur număr natural ce reprezintă cea mai mare cifră a numărul N pentru care s-a acţionat un număr minim de ace ale grilei.
pe cea de-a doua linie a fişierului se va scrie cel mai mare număr natural ce poate fi tipărit prin K puncte.
Restricții și precizări:
10 ≤ N ≤ 1015
14 ≤ K ≤ 100000
Pentru rezolvarea corectă a cerinţei a) se acordă 30% din punctajul fiecărui test iar pentru rezolvarea corectă a cerinţei b) se acordă 70% din punctajul fiecărui test.

Problema De Pe Pbinfo 1045 CifOji6 Este O Imprimantă Matriceală Numită Şi Imprimantă Cu Ace Deoarece Tipărirea Se Realizează Prin Impactul Acelor Capului De Imp class=

Răspuns :

#include <fstream>

using namespace std;

int x[10] = {12, 5, 11, 11, 9, 11, 12, 7, 13, 12};

int main() {

ifstream cin("imprimanta.in");

ofstream cout("imprimanta.out");

unsigned long long a;

int k, maxcif = -1, minap = 14, nrmaxcif, pramas;

cin >> a >> k;

cin.close();

while (a) {

if (x[a % 10] < minap) {

maxcif = a % 10;

minap = x[a % 10];

}

else

if (x[a % 10] == minap)

if (a % 10 > maxcif)

maxcif = a % 10;

a /= 10;

}

cout << maxcif << '\n';

nrmaxcif = k / 5;

pramas = k % 5;

if (pramas == 0) {

for (int i = 1; i <= nrmaxcif; i++) cout << 1;

return 0;

}

else

if (pramas == 1) {

if (k == 16) {

cout << 74;

return 0;

}

else {

cout << 777;

for (int i = 1; i <= nrmaxcif - 4; i++) cout << 1;

return 0;

}

}

else

if (pramas == 2) {

cout << 7;

for (int i = 1; i <= nrmaxcif - 1; i++) cout << 1;

return 0;

}

else

if (pramas == 3) {

cout << 8;

for (int i = 1; i <= nrmaxcif - 2; i++) cout << 1;

return 0;

}

else {

cout << 77;

for (int i = 1; i <= nrmaxcif - 2; i++) cout << 1;

return 0;

}

}