Den lille byen der du bor, planlegger å innføre et nytt system for trygdenumre (SSN). Hver innbygger vil bli identifisert med et femsifret SSN. De fire første sifrene angir basis-ID-nummeret (0000–9999), og det siste sifferet er et kontrollsiffer for å oppdage feil.
For å beregne kontrollsifre har byen bestemt seg for å bruke en operasjonstabell. En operasjonstabell er en $10 \times 10$-tabell med desimalsifre der alle diagonalelementene er $0$. Nedenfor vises to eksempler på operasjonstabeller.
Operasjonstabell 1
| $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | |
|---|---|---|---|---|---|---|---|---|---|---|
| $0$ | $0$ | $3$ | $1$ | $7$ | $5$ | $9$ | $8$ | $6$ | $4$ | $2$ |
| $1$ | $7$ | $0$ | $9$ | $2$ | $1$ | $5$ | $4$ | $8$ | $6$ | $3$ |
| $2$ | $4$ | $2$ | $0$ | $6$ | $8$ | $7$ | $1$ | $3$ | $5$ | $9$ |
| $3$ | $1$ | $7$ | $5$ | $0$ | $9$ | $8$ | $3$ | $4$ | $2$ | $6$ |
| $4$ | $6$ | $1$ | $2$ | $3$ | $0$ | $4$ | $5$ | $9$ | $7$ | $8$ |
| $5$ | $3$ | $6$ | $7$ | $4$ | $2$ | $0$ | $9$ | $5$ | $8$ | $1$ |
| $6$ | $5$ | $8$ | $6$ | $9$ | $7$ | $2$ | $0$ | $1$ | $3$ | $4$ |
| $7$ | $8$ | $9$ | $4$ | $5$ | $3$ | $6$ | $2$ | $0$ | $1$ | $7$ |
| $8$ | $9$ | $4$ | $3$ | $8$ | $6$ | $1$ | $7$ | $2$ | $0$ | $5$ |
| $9$ | $2$ | $5$ | $8$ | $1$ | $4$ | $3$ | $6$ | $7$ | $9$ | $0$ |
Operasjonstabell 2
| $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | |
|---|---|---|---|---|---|---|---|---|---|---|
| $0$ | $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ |
| $1$ | $9$ | $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ |
| $2$ | $8$ | $9$ | $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ |
| $3$ | $7$ | $8$ | $9$ | $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ |
| $4$ | $6$ | $7$ | $8$ | $9$ | $0$ | $1$ | $2$ | $3$ | $4$ | $5$ |
| $5$ | $5$ | $6$ | $7$ | $8$ | $9$ | $0$ | $1$ | $2$ | $3$ | $4$ |
| $6$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | $0$ | $1$ | $2$ | $3$ |
| $7$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | $0$ | $1$ | $2$ |
| $8$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | $0$ | $1$ |
| $9$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | $0$ |
Ved hjelp av en operasjonstabell beregnes kontrollsifferet $e$ for et firesifret basis-ID-nummer $abcd$ med følgende formel. Her betegner $i \otimes j$ tabellelementet i rad $i$ og kolonne $j$.
$$e = (((0 \otimes a) \otimes b) \otimes c) \otimes d$$
For eksempel beregnes kontrollsifferet $e$ for basis-ID-nummeret $abcd = 2016$ ved bruk av Operasjonstabell 1 på følgende måte.
$$\begin{aligned} e &= (((0 \otimes 2) \otimes 0) \otimes 1) \otimes 6 \\ &= ((1 \otimes 0) \otimes 1) \otimes 6 \\ &= (7 \otimes 1) \otimes 6 \\ &= 9 \otimes 6 \\ &= 6 \end{aligned}$$
Dermed er SSN-nummeret $20166$.
Merk at kontrollsifferet avhenger av hvilken operasjonstabell som brukes. Med Operasjonstabell 2 får vi $e = 3$ for det samme basis-ID-nummeret $2016$, og hele SSN-nummeret blir $20163$.
$$\begin{array}{c} \begin{aligned} 2016 & \\ \Downarrow & \; \text{+kontrollsiffer med Operasjonstabell 2} \\ 20163 & \\ \Downarrow & \; \text{menneskelige feil} \end{aligned} \\[6pt] \boxed{\begin{array}{c} \overbrace{\mathbf{0}0163 \quad \mathbf{1}0163 \quad \dots \quad \mathbf{9}0163 \quad 2\mathbf{1}163 \quad 2\mathbf{2}163 \quad \dots \quad 2016\mathbf{8} \quad 2016\mathbf{9}}^{\text{Endring av ett enkelt siffer}} \\[10pt] \overbrace{\mathbf{02}163 \quad 2\mathbf{10}63 \quad 20\mathbf{61}3 \quad 201\mathbf{36}}^{\text{Ombytting av to nabosifre}} \end{array}} \end{array}$$
Figur B.1. To typer vanlige menneskelige feil
Formålet med å legge til kontrollsifferet er å oppdage menneskelige feil ved skriving eller inntasting av SSN-numre. Følgende funksjon check kan oppdage visse menneskelige feil. For et femsifret tall $abcde$ er funksjonen check definert slik.
$$\operatorname{check}(abcde) = ((((0 \otimes a) \otimes b) \otimes c) \otimes d) \otimes e$$
Denne funksjonen returnerer $0$ for et gyldig SSN. Det skyldes at hvert diagonalelement i en operasjonstabell er $0$, og at vi for et gyldig SSN har $e = (((0 \otimes a) \otimes b) \otimes c) \otimes d$:
$$\operatorname{check}(abcde) = ((((0 \otimes a) \otimes b) \otimes c) \otimes d) \otimes e = e \otimes e = 0.$$
På den annen side betyr en verdi ulik null fra check at det oppgitte nummeret ikke kan være et gyldig SSN. Merk at avhengig av hvilken operasjonstabell som brukes, kan funksjonen check returnere $0$ også for et ugyldig SSN. Hvilke typer feil som oppdages, avhenger av operasjonstabellen som brukes; tabellen avgjør kvaliteten på feildeteksjonen.
Bymyndighetene ønsker å oppdage to typer vanlige menneskelige feil i siffersekvenser: endring av ett enkelt siffer og ombytting av to nabosifre, som vist i Figur B.1.
En operasjonstabell er god dersom den kan oppdage alle vanlige feil av de to typene på alle SSN-numre laget ut fra de firesifrede basis-ID-numrene 0000–9999. Merk at feil i kontrollsifferet, så vel som i de fire basis-ID-sifrene, skal oppdages. For eksempel er Operasjonstabell 1 god. Operasjonstabell 2 er ikke god fordi $\operatorname{check}(20613)$ er $0$ for $20613$, som er et nummer oppnådd ved å bytte om det 3. og det 4. sifferet i et gyldig SSN $20163$. Faktisk klarer Operasjonstabell 2 blant de $10000$ basis-ID-numrene ikke å oppdage én eller flere vanlige feil for så mange som $3439$ basis-ID-numre.
Gitt en operasjonstabell, avgjør hvor god den er ved å telle antall basis-ID-numre som den gitte tabellen ikke klarer å oppdage én eller flere vanlige feil for.
Inndata
Inndata består av ett enkelt testtilfelle på følgende format.
$$\begin{array}{cccc} x_{00} & x_{01} & \cdots & x_{09} \\ \vdots & & & \\ x_{90} & x_{91} & \cdots & x_{99} \end{array}$$
Inndata beskriver en operasjonstabell der $x_{ij}$ er desimalsifferet i rad $i$ og kolonne $j$. Hver linje tilsvarer en rad i tabellen, der elementene er atskilt med ett enkelt mellomrom. Diagonalelementene $x_{ii}$ ($i = 0, \ldots, 9$) er alltid $0$.
Utdata
Skriv ut antall basis-ID-numre som den gitte tabellen ikke klarer å oppdage én eller flere vanlige menneskelige feil for.
Eksempler
Inndata 1
0 3 1 7 5 9 8 6 4 2 7 0 9 2 1 5 4 8 6 3 4 2 0 6 8 7 1 3 5 9 1 7 5 0 9 8 3 4 2 6 6 1 2 3 0 4 5 9 7 8 3 6 7 4 2 0 9 5 8 1 5 8 6 9 7 2 0 1 3 4 8 9 4 5 3 6 2 0 1 7 9 4 3 8 6 1 7 2 0 5 2 5 8 1 4 3 6 7 9 0
Utdata 1
0
Inndata 2
0 1 2 3 4 5 6 7 8 9 9 0 1 2 3 4 5 6 7 8 8 9 0 1 2 3 4 5 6 7 7 8 9 0 1 2 3 4 5 6 6 7 8 9 0 1 2 3 4 5 5 6 7 8 9 0 1 2 3 4 4 5 6 7 8 9 0 1 2 3 3 4 5 6 7 8 9 0 1 2 2 3 4 5 6 7 8 9 0 1 1 2 3 4 5 6 7 8 9 0
Utdata 2
3439
Inndata 3
0 9 8 7 6 5 4 3 2 1 1 0 9 8 7 6 5 4 3 2 2 1 0 9 8 7 6 5 4 3 3 2 1 0 9 8 7 6 5 4 4 3 2 1 0 9 8 7 6 5 5 4 3 2 1 0 9 8 7 6 6 5 4 3 2 1 0 9 8 7 7 6 5 4 3 2 1 0 9 8 8 7 6 5 4 3 2 1 0 9 9 8 7 6 5 4 3 2 1 0
Utdata 3
9995
Inndata 4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Utdata 4
10000