UTF-8ã¯ãƒžãƒ«ãƒãƒã‚¤ãƒˆæ–‡å—を符å·åŒ–ã™ã‚‹æ‰‹æ³•ã®ä¸€ã¤ã§ã‚る。
æ–‡å—ã¯è¨ˆç®—機上ã§ã¯ãƒã‚¤ãƒˆåˆ—ã¨ã—ã¦æ‰±ã‚れる。英語ã ã‘ã§ã‚ã‚Œã°ãƒ©ãƒ†ãƒ³ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆãŠã‚ˆã³æ•°å—ã€è¨˜å·ã‚’åˆã‚ã›ã¦ã‚‚ 1byteã§è¡¨ç¾ã§ãã‚‹ãŒã€æ®‹å¿µãªãŒã‚‰ä¸–ç•Œä¸ã§åˆ©ç”¨ã•ã‚Œã¦ã„ã‚‹æ–‡å—ã‚’1byteã§è¡¨ç¾ã™ã‚‹ã“ã¨ã¯ã§ããªã„ãŸã‚ã€è¤‡æ•°ã®ãƒã‚¤ãƒˆã‚’用ã„ã¦æ–‡å—を表ã™å¿…è¦ãŒã‚る。
ã“ã“ã§ä¾‹ãˆã°"ã‚"ã¨ã„ã†æ–‡å—ã«12354(0x3042)ã¨ã„ã†2ãƒã‚¤ãƒˆåˆ—を割り当ã¦ãŸã¨ãã€ãã®ã¾ã¾ãƒã‚¤ãƒˆåˆ—を並ã¹ã‚‹ã¨0x30,0x42ã¨2æ–‡å—ãªã®ã‹0x3042ã§1æ–‡å—ãªã®ã‹ãŒåŒºåˆ¥ãŒã¤ã‹ãªã„。
ã“ã®ãŸã‚ã€ãƒžãƒ«ãƒãƒã‚¤ãƒˆæ–‡å—符å·åŒ–æ–¹å¼ã®UTF-8ã§ã¯å§‹ã‚ã®1ãƒã‚¤ãƒˆç›®ã§ç¶šããƒã‚¤ãƒˆåˆ—ã®é•·ã•ãŒåˆ†ã‹ã‚‹ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã“ã®å•é¡Œã‚’å…‹æœã—ã¦ã„る。具体的ãªãƒ“ットパターンã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚‹ã€‚
ãƒã‚¤ãƒˆé•· | ビットパターン |
---|---|
1 | 0xxxxxxx |
2 | 110yyyyx 10xxxxxx |
3 | 1110yyyy 10yxxxxx 10xxxxxx |
4 | 11110yyy 10yyxxxx 10xxxxxx 10xxxxxx |
ã“ã“ã§xã¯0/1ã®ä»»æ„ã®ãƒ“ットã¨ã™ã‚‹ã€‚ã¾ãŸyã‚‚0/1ã®ä»»æ„ã®ãƒ“ットã¨ãªã‚‹ãŒã©ã‚Œã‹ä¸€ã¤ã¯1ã§ã‚ã‚‹å¿…è¦ãŒã‚る。ã¾ãŸå…¨ã¦ã®æ–‡å—ã¯1,2,3,4ãƒã‚¤ãƒˆæ–‡å—ã®ã„ãšã‚Œã‹ã§ã‚ã‚‹ã¨ã™ã‚‹ã€‚
ã“ã“ã§yã®ãƒ“ットãŒå°‘ãªãã¨ã‚‚一ã¤ã¯1ã§ã‚ã‚‹ã¨ã„ã†åˆ¶ç´„ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªç†ç”±ã«ã‚ˆã‚‹ã€‚ 例ãˆã°'/'(0x2f)ã‚’ãƒã‚¤ãƒˆåˆ—ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã™ã‚‹éš›ã«0x2fã¨1ãƒã‚¤ãƒˆã§ç¬¦å·åŒ–ã™ã‚‹ãªã„ã—ã¯0xc0 0xafã¨2ãƒã‚¤ãƒˆã§ç¬¦å·åŒ–ã™ã‚‹æ–¹æ³•ã®äºŒã¤ãŒã‚ã‚‹ãŒã€ã“ã®ã‚ˆã†ãªæ›–昧性を許ã™ã¨ã‚»ã‚ュリティ上ã®è„…å¨ã®ã‚‚ã¨ã¨ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã§ã‚る。
以上ã®è©±ã‚’èžã„ãŸã‚ãªãŸã¯UTF-8ãŒã©ã®ç¨‹åº¦ã®è‡ªç”±åº¦ãŒã‚ã‚‹ã®ã‹ãŒæ°—ã«ãªã£ãŸã€‚具体的ã«ã¯ä¸Žãˆã‚‰ã‚ŒãŸãƒã‚¤ãƒˆåˆ—ã®ä¸€éƒ¨ã®ãƒ“ットãŒä¸æ˜Žãªæ™‚ã«UTF-8ã¨ã—ã¦å¯èƒ½ãªãƒã‚¤ãƒˆåˆ—ã®çµ„ã¿åˆã‚ã›ãŒã©ã®ç¨‹åº¦ã‚ã‚‹ã‹ã¨ã„ã†ã“ã¨ã§ã‚る。
ã“ã®ã¨ãå¯èƒ½ãªãƒã‚¤ãƒˆåˆ—ã®çµ„ã¿åˆã‚ã›ã®å€‹æ•°ã‚’求ã‚ã€1,000,000ã§å‰²ã£ãŸä½™ã‚Šã‚’出力ã›ã‚ˆã€‚
N b1 b2 ... bN
Nã¯ãƒã‚¤ãƒˆåˆ—ã®å€‹æ•°, biã¯ãƒã‚¤ãƒˆåˆ—ã§ã‚る。 1 ≤ N ≤ 1000 を満ãŸã—ã¦ã„る。 biã¯è¨˜å·{0/1/x}ãŒ8個並んã§ã„る。xã¯ãƒ“ットãŒä¸æ˜Žã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¦ã„る。
å¯èƒ½ãªãƒã‚¤ãƒˆåˆ—ã®çµ„ã¿åˆã‚ã›ã®å€‹æ•°ã‚’1,000,000ã§å‰²ã£ãŸä½™ã‚Šã‚’出力ã›ã‚ˆã€‚
上記入力形å¼ã§è¤‡æ•°ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã€‚å„データセットã«å¯¾ã—ã¦ä¸Šè¨˜å‡ºåŠ›å½¢å¼ã§å‡ºåŠ›ã‚’è¡Œã†ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã—ã¦ä¸‹ã•ã„。
N ㌠0 ã®ã¨ã入力ã®çµ‚ã‚りを示ã—ã¾ã™ã€‚
1 xxxxxxxx 3 11100000 10x00000 10111111 3 11100000 10000000 10111111 4 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 0
128 1 0 778240