Un indicator numeric este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale.
Un indicator numeric este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale.
Acesta conține 7 segmente notate cu a, b, c, d, e, f, g, ca în figura de mai jos.

Afişarea unei cifre se face prin aprinderea unei combinații de segmente conform tabelului:
| Cifră | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| Segmente aprinse | a,b,c,d,e,f | b,c | a,b,d,e,g | a,b,c,d,g | b,c,f,g | a,c,d,f,g | a,c,d,e,f,g | a,b,c | a,b,c,d,e,f,g | a,b,c,d,f,g |
Cerința
Cunoscând un număr natural N afișat cu ajutorul mai multor indicatoare numerice, să se scrie un program care determină:
- Numărul de segmente aprinse pentru afișarea numărului
N. - Numărul de numere distincte mai mari decât
N,ce se pot forma prin aprinderea a cel puțin unui segment în plus, față de cele utilizate pentru afișarea număruluiN, fără a folosi alte indicatoare numerice, și fără a stinge niciun segment dintre cele deja aprinse.
Date de intrare
Fișierul de intrare cifre12.in conține pe prima linie numărul natural V a cărui valoare poate fi doar 1 sau 2, iar pe a doua linie numărul natural N.
Date de ieșire
Fișierul de ieșire este cifre12.out.
Dacă valoarea lui V este 1 atunci fişierul de ieşire va conţine pe prima linie un singur număr natural ce reprezintă numărul de segmente aprinse pentru afișarea numărului N.
Dacă valoarea lui V este 2 atunci fişierul de ieşire va conține pe prima linie un singur număr natural reprezentând numărul de numere distincte mai mari decât N, ce se pot forma prin aprinderea a cel puțin unui segment în plus, față de cele utilizate pentru afișarea numărului N, fără a folosi alte indicatoare numerice.
Restricții și precizări
10 ≤ N ≤ 1019- 20% din teste vor avea valoarea
V = 1, iar 80% din teste vor avea valoareaV = 2.
Exemplul 1
cifre12.in
1 823
cifre12.out
17
Explicație
V = 1, deci se rezolvă NUMAI prima cerință. N = 823;
Pentru afișarea cifrei 8 s-au aprins 7 segmente, pentru cifra 2 s-au aprins 5 segmente și pentru cifra 3 tot 5 segmente. În total s-au aprins 17 segmente.
Exemplul 2
cifre12.in
2 823
cifre12.out
5
Explicație
V = 2, deci se rezolvă NUMAI a doua cerință. N = 823;
Din cifra 8 nu se mai pot obține alte cifre prin aprinderea de noi segmente.
Din cifra 2 se poate obține cifra 8 iar din cifra 3 se pot obține cifrele 8 și 9 prin aprinderea de noi segmente. Așadar, se pot obține 5 numere mai mari ca 823: 828, 829, 883, 888, 889.
#include <bits/stdc++.h>
using namespace std;
int c[]={6, 2, 5, 5, 4, 5, 6, 3, 7, 6 };
int t[]={2, 7, 2, 3, 3, 4, 2, 5, 1, 2};
int mm[]={1, 5, 1, 2, 2, 3, 1, 2, 0, 0 };
int cif[25];
char s[25];
unsigned long long p,sol;
ifstream fin ("cifre12.in");
ofstream fout ("cifre12.out");
int main()
{
int t1,k=0,sum=0,g;
fin >> t1;
fin >> s;
for (k=0;s[k];++k)
cif[k]=s[k]-'0';
if(t1==1)
{
for (int i=0;i<k;++i)
sum +=c[cif[i]];
fout << sum;
}
else
{
for (int i=0;i<k;++i)
{
p=1;
for (int j=i+1;j<k;j++)
{
g=cif[j];
p=p*t[g];
}
sol +=mm[cif[i]] *p;
}
fout << sol;
}
return 0;
}