Олимпиадага даярдык: тез киргизүү-чыгаруу
bufio: тез киргизүү-чыгаруу жана Go тилиндеги олимпиадалык шаблон.
fmt.Scan символ-символ окуйт жана чоң маалыматтарда үмүтсүз жай. Go тилиндеги олимпиадалык стандарт — bufio пакетиндеги буферленген киргизүү-чыгаруу:
• bufio.Reader + fmt.Fscan — тез окуу;
• bufio.Writer + fmt.Fprintln — тез чыгаруу; аягында writer.Flush() милдеттүү, антпесе буфер басылбай калат (жана туура чечим менен Wrong Answer аласыз).
Go
Олимпиадалык шаблон. Киргизиңиз: 4, андан кийин 10 20 30 40
Шаблондо эмне маанилүү:
• reader жана writer пакет деңгээлинде жарыяланган — каалаган функциядан жеткиликтүү;
• defer writer.Flush() main функциясынан чыкканда буфердин тазаланышын кепилдейт — бул сапты биринчи жазуу Go олимпиадачыларынын ырымына айланган;
• fmt.Fscan(reader, &x) — ошол эле Scan, бирок тез буферден.
Go олимпиадачысынын checklist'и:
1. writer.Flush() унутулган жокпу? (defer муну биротоло чечет)
2. Go тилинде int 64 биттик — int32 ашып кетүүсүнөн коркпосо болот, бирок үч чоң сандын көбөйтүндүсүн баары бир текшериңиз.
3. len(s) — байттар; кириллица жана юникод үчүн []rune аркылуу иштеңиз.
4. Колдонулбаган өзгөрмөлөр жана импорттор компиляцияланбайт — өчүрүңүз.
Курс аяктады — куттуктайбыз!
«Окуу» бөлүмүн ачып, «Олимпиадачынын жолун» 1-деңгээлден баштаңыз: алгоритмдердин татаалдыгы, ишке ашыруу маселелери жана негизги математика. Мелдештерде ийгилик каалайбыз!