Prihlásenie Registrácia  

I - IBAN

Časový limit: 2s, Pamäťový limit: 64MiB

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3

Počet bodov: 1

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

Od prvého februára 2014 sa platobný styk slovenských občanov a podnikateľov realizuje v novom jednotnom systéme SEPA (Single Euro Payments Area). Všetky právnické osoby sú povinné od tohto termínu používať medzinárodne štandardizovaný tvar čísla bankového účtu IBAN (International Bank Account Number) (pre fyzické osoby platí do 31.1.2016 prechodné obdobie, počas ktorého peňažná inštitúcia bezplatne prekonvertuje číslo účtu).

Úloha

Napíšte program, ktorý skontroluje čísla účtov vo formáte IBAN pre Slovenskú republiku.

Popis formátu IBAN

  • IBAN pozostáva z maximálne 34 alfanumerických znakov (0-9, A-Z) (štandard EBS204, založený na norme ISO 13616)
  • IBAN sa skladá z kódu krajiny (2 alfabetické znaky podľa ISO 3166-1), 2 kontrolných číslic a národného čísla účtu (BBAN).
  • na kontrolu správnosti IBANu sa používa MOD97-10 algoritmus (ISO/IEC 7064)
  • Slovenská republika má v norme ISO 3166-1 pridelený dvojznakový kód SK
  • BBAN pre Slovenskú republiku je tvorený 4 číselným kódom banky, 6 číselným predčíslim a 10 číselným číslom účtu (Vestník NBS 8/2009)
  • predčíslie aj číslie účtu (každé osobitne) majú poslednú číslicu kontrolnú (kontrolný algoritmus ISO/IEC 7064 MOD 11,2)

Popis kontroly IBANu (MOD97-10)

  1. IBAN sa preusporiada, prvé štyri znaky sa presunú na koniec
  2. všetky písmená sa prevedú na dvojciferné čísla (A=10, B=11, ..., Z=36)
  3. výsledné číslo musí dávať po delení 97 zvyšok 1

Popis kontroly čísla účtu (MOD11,2)

Jednotlivé číslice sa vynásobia príslušnou váhou, násobky sa sčítajú a vydelia číslom 11. Zvyšok musí byť nula. Váhy sa k čísliciam na jednotlivých pozíciách predčíslia účtu a základného čísla účtu priraďujú sprava v poradí 1, 2, 4, 8, 5, 10, 9, 7, 3, 6.

Kódy bánk platné k 1.3.2014 (Prevodník identifikačných kódov pre tuzemský platobný styk pre Slovenskú republiku (NBS))

Kód     Znak.   Názov
0200 	SUBA 	Všeobecná úverová banka, a.s.
0900 	SLSP 	Slovenská sporiteľňa, a.s.
0720 	NBSL 	Národná banka Slovenska
1100 	TATR 	Tatra banka, a.s.
1111 	UNCR 	UniCredit Bank Czech Republic and Slovakia, a.s., pobočka zahraničnej banky
3000 	SLZB 	Slovenská záručná a rozvojová banka, a.s.
3100 	LUBA 	Sberbank Slovensko, a.s. 
5200 	OTPV 	OTP Banka Slovensko, a.s. 
5600 	PKBA 	Prima banka Slovensko, a.s.
5900 	PSSP 	Prvá stavebná sporiteľňa, a.s.
6500 	PABK 	Poštová banka, a.s.
7300 	INGBSA 	ING Bank N.V.,  pobočka zahraničnej banky
7500 	CEKOSA 	Československá obchodná banka, a.s.
7930 	SPVW 	Wüstenrot stavebná sporiteľňa, a.s.
8050 	COBASA 	Commerzbank Aktiengesellschaft, pobočka zahraničnej banky, Bratislava
8100 	KOMBSA 	Komerční banka, a.s., pobočka zahraničnej banky
8120 	BASL 	Privatbanka, a.s.
8130 	CITISA 	Citibank Europe plc, pobočka zahraničnej banky
8170 	CSOBSA 	ČSOB stavebná sporiteľňa, a.s.
8160 	EXSR 	EXIMBANKA SR
8180 	SPSR 	Štátna pokladnica
8191 	CDSA 	Centrálny depozitár cenných papierov SR, a.s.
8400 	MAISSA 	Banco Banif Mais S.A., pobočka zahraničnej banky
8320 	JTBPSA 	J&T BANKA, a.s., pobočka zahraničnej banky
8330 	FIOZSA 	Fio banka, a.s., pobočka zahraničnej banky
8350 	ABNASA 	The Royal Bank of Scotland plc, pobočka zahraničnej banky
8360 	BREXSA 	mBank S.A., pobočka zahraničnej banky
8370 	SMWRSA 	Oberbank AG  pobočka zahraničnej banky v Slovenskej republike
8390 	AKCTSA 	AKCENTA, spořitelní a uvěrní družstvo, pobočka Košice
8410 	ZUNO 	ZUNO BANK AG, pobočka zahraničnej banky
8420 	BKSB 	BKS Bank AG, pobočka zahraničnej banky v SR
8430 	KDBHSA 	KDB Bank Europe Ltd., pobočka zahraničnej banky
9950 	PKSR 	First Data Slovakia, s.r.o.
9951 	BACP 	Burza cenných papierov v Bratislave, a.s.
9952 	TTPA 	Trust Pay, a.s.
2010 	FIOZ 	Fio banka, a.s.

Vstup

Na prvom riadku vstupu je jedno celé číslo N, 1 ≤ N ≤ 1.000, udávajúce počet čísel. Každý z nasledujúcich N riadkov obsahuje reťazec dĺžky najviac 50 (len číslice a veľké písmená).

Výstup

Výstupom programu je pre každé číslo účtu na vstupe jeden riadok obsahujuci text ano, ak číslo účtu spĺňa všetky náležitosti IBAN čísla účtu v Slovenskej republike. V prípade akejkoľvek chyby v čísle IBAN, vypíšte nie.

Príklad

Vstup:

3
SK6981800000000009876543
SK6781800000000009876543
SK6281800000000098765432

Výstup:

ano
nie
nie

Poznámky:

Kontroly pre prvé číslo (mod-97, modulo 11):
SK6981800000000009876543 -> 81800000000009876543SK69 -> 81800000000009876543282069 mod 97 = 1
(9.9+8.10+7.5+6.8+5.4+4.2+3.1) mod 11 = 0 
Druhé číslo má nesprávne kontrolné číslice pre IBAN, tretie má nesprávny formát čísla účtu.