ã„よã„よ Gâ—‹â—‹gle Code Jam ã®ä¸–界大会ãŒå§‹ã¾ã‚ã†ã¨ã—ã¦ã„る. å‰ã§ã¯ Pâ—‹tr, tâ—‹mek, SnapDragâ—‹n ã‚’ã¯ã˜ã‚ã¨ã™ã‚‹ï¼Œ Gâ—‹â—‹gle ã®èª‡ã‚‹æœ€å¼·ã®ã‚³ãƒ¼ãƒ€ãƒ¼é”ãŒç¨ã¿ã‚’利ã‹ã›ã¦ã„る. 妙ãªå‹•ãを見ã›ã‚Œã°ï¼Œå‘½ã¯ãªã„ã ã‚ã†ï¼Ž 目をã¤ã‚€ã‚Šï¼Œã‚³ãƒ³ãƒ†ã‚¹ãƒˆé–‹å§‹ã‚’ã˜ã£ã¨å¾…ã¤ï¼Ž
…妙ã ,コンテストãŒå§‹ã¾ã‚‰ãªã„. 目を開ã‘ã¦ã¿ã‚‹ã¨â€¦ãªã‚“ã¨ã„ã†ã“ã¨ã .部屋ã®å…¨ã¦ã®äººé–“ãŒï¼Œå€’ã‚Œã¦ã„る. ã„ã‚„é•ã†ï¼Œå…¨ã¦ã§ã¯ãªã„.一人ã®ç”·ï¼Œwata を除ã„ã¦ã .
ã¯ã£â€¦!! 僕ã¯å…¨ã¦ã‚’æ€ã„出ã—ã¦ã„ãŸï¼Ž 僕ã¯ä¸–ç•Œã§æœ€åˆã«ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚³ãƒ³ãƒ†ã‚¹ãƒˆã§äººã‚’殺ã‚ãŸã®ã . ãã—ã¦ï¼Œåƒ•ãŒæ®ºã—ãŸã®ã¯ä»–ã§ã‚‚ãªã,最も仲ã®è‰¯ã‹ã£ãŸå‹äººã®ä¸€äººï¼Œkita_masa ã§ã‚ã£ãŸï¼Ž
kita_masa ã¯è‡ªã‚‰ã‚’ビット演算ã®é”人ã¨è¨€ã„, ã‚らゆる関数ã¯ãƒ“ット演算ã§è¨˜è¿°ã§ãã‚‹ã¨è¨€ã†ï¼Œå°‘ã—変ã‚ã£ãŸå¥´ã ã£ãŸï¼Ž ãã†ã„ãˆã°ä»Šï¼Œãƒ“ット演算を用ã„ã¦ä½œæˆã—ãŸã„関数ãŒã‚ã‚‹ãŒï¼Œ kita_masa ã«ãれをãŠé¡˜ã„ã™ã‚‹ã“ã¨ã¯ã§ããªã„. ãã“ã§ï¼Œkita_masa ã®ä»£ã‚ã‚Šã«ãªã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã™ã‚‹ã“ã¨ã«ã—ãŸï¼Ž
N 個ã®æ•´æ•°ã®çµ„ (xi, yi) ãŒä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž å…¨ã¦ã®çµ„ã«å¯¾ã—㦠yi = f(xi) ãªã‚‹é–¢æ•° f を制約ã®ä¸‹ã§ä½œã‚‹ã“ã¨ã‚’考ãˆã‚‹ï¼Ž
関数 f ã¯ï¼ŒC 言語ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¨ã—ã¦ä»¥ä¸‹ã®ã‚ˆã†ã«è¡¨ç¾ã§ãã‚‹ã‚‚ã®ã¨ã™ã‚‹:
uint32_t f(uint32_t x) { return å¼; }
ã“ã“ã§ï¼Œuint32_t 㯠32 ビット符å·ç„¡ã—整数を表ã™ï¼Ž ã¾ãŸï¼Œå¼ã¯ä»¥ä¸‹ã® BNF ã§è¡¨ç¾ã§ãã‚‹ã‚‚ã®ã¨ã™ã‚‹:
<expr> ::= "x" | <num> | "(~" <expr> ")" | "(" <expr> <op2> <expr> ")" <op2> ::= "&" | "|" | "^" | "+" | "-" | "*"
<num> 㯠32 ビット符å·ç„¡ã—æ•´æ•°ã§è¡¨ç¾ã§ãã‚‹éžè² ã®æ•´æ•°ã‚’ 10 進数ã§è‡ªç„¶ã« (leading-zero ç‰ã‚’æŒãŸãš) 表ç¾ã—ãŸã‚‚ã®ã¨ã™ã‚‹ï¼Ž
ã“ã®ã‚ˆã†ãªé–¢æ•°ã®å¼ã‚’出力ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆï¼Ž
入力ã®æœ€åˆã®è¡Œã¯ 1 ã¤ã®æ•´æ•° N ã‚’å«ã‚€ï¼Ž
続ã N 行㮠i 行目㯠2 ã¤ã®æ•´æ•° xi, yi ã‚’å«ã‚€ï¼Ž
æ¡ä»¶ã‚’満ãŸã™å¼ã‚’出力ã›ã‚ˆï¼Ž
ã“ã®å•é¡Œã®åˆ¤å®šã«ã¯ï¼Œ20 点分ã®ãƒ†ã‚¹ãƒˆã‚±ãƒ¼ã‚¹ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒè¨å®šã•ã‚Œã¦ã„る. ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å«ã¾ã‚Œã‚‹ãƒ†ã‚¹ãƒˆã‚±ãƒ¼ã‚¹ã®å…¥åŠ›ã¯ä»¥ä¸‹ã‚’満ãŸã™ï¼Ž
入力例1:
8 1 1 2 2 3 3 4 0 5 1 6 2 7 3 8 0
入力例 1 ã«å¯¾ã™ã‚‹å‡ºåŠ›ã®ä¾‹:
(x&3)
入力例2:
8 1 0 2 0 3 2 4 0 5 4 6 4 7 6 8 0
入力例 2 ã«å¯¾ã™ã‚‹å‡ºåŠ›ã®ä¾‹:
(x&(x-1))
良ã知られる最å³ã® 1 ビットをオフã«ã™ã‚‹æ“作ã§ã‚る.