1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import Data.List import Data.Char import Data.Maybe ( fromJust ) import qualified Data.IntMap as M import qualified Data.ByteString.Lazy.Char8 as BS byteSum :: BS.ByteString -> Integer byteSum s = BS.foldr ( \x y -> y + ( fromIntegral . digitToInt $ x ) ) 0 s {-- testSeven :: BS.ByteString -> Integer testSeven s = sum. BS.zipWith (\x y -> fromIntegral $ digitToInt x * digitToInt y ) s . BS.pack. concatMap show . concat. repeat $ [ 1 , 3 , 2 , 6 , 4 , 5 ] --} numDiv :: Int -> BS.ByteString -> Bool numDiv a s | a == 0 = False | a == 1 = True | a == 2 = if even . digitToInt . BS.last $ s then True else False | a == 3 = if mod ( byteSum s ) 3 == 0 then True else False | a == 4 = if mod ( fst . fromJust . BS.readInt . BS.drop k $ s ) 4 == 0 then True else False | a == 5 = if mod ( digitToInt . BS.last $ s ) 5 == 0 then True else False | a == 6 = numDiv 2 s && numDiv 3 s | a == 7 = if BS.foldr ( \x y -> mod ( 10 * y + digitToInt x ) 7 ) 0 s == 0 then True else False | a == 8 = if mod ( fst . fromJust . BS.readInt . BS.drop m $ s ) 8 == 0 then True else False | a == 9 = if mod ( byteSum s ) 9 == 0 then True else False where len = BS.length s k = len - 2 m = len - 3 solve :: BS.ByteString -> BS.ByteString solve s = BS.pack.show $ ret where mp = BS.foldr ( \x y -> M.insertWith (+) ( digitToInt x ) 1 y ) M.empty s key = M.keys mp ret = foldr ( \x y -> if numDiv x s then y + ( fromJust . M.lookup x $ mp ) else y ) 0 key main = BS.interact $ BS.unlines . map solve . BS.lines |
aW1wb3J0IERhdGEuTGlzdCAKaW1wb3J0IERhdGEuQ2hhcgppbXBvcnQgRGF0YS5NYXliZSAoIGZyb21KdXN0ICkgCmltcG9ydCBxdWFsaWZpZWQgRGF0YS5JbnRNYXAgYXMgTSAKaW1wb3J0IHF1YWxpZmllZCBEYXRhLkJ5dGVTdHJpbmcuTGF6eS5DaGFyOCBhcyBCUwoKYnl0ZVN1bSA6OiBCUy5CeXRlU3RyaW5nIC0+IEludGVnZXIgCmJ5dGVTdW0gcyA9IEJTLmZvbGRyICggXHggeSAtPiB5ICsgKCBmcm9tSW50ZWdyYWwgLiBkaWdpdFRvSW50ICQgeCApICApIDAgcyAKCgp7LS0KdGVzdFNldmVuIDo6IEJTLkJ5dGVTdHJpbmcgLT4gSW50ZWdlciAKdGVzdFNldmVuIHMgPSBzdW0uIEJTLnppcFdpdGggKFx4IHkgLT4gZnJvbUludGVncmFsICQgZGlnaXRUb0ludCB4ICogZGlnaXRUb0ludCB5ICkgIHMgLiBCUy5wYWNrLiBjb25jYXRNYXAgc2hvdyAuICBjb25jYXQuIHJlcGVhdCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJCBbIDEgLCAzICwgMiAsIDYgLCA0ICwgNSBdCgotLX0KCm51bURpdiA6OiBJbnQgLT4gQlMuQnl0ZVN0cmluZyAtPiBCb29sIApudW1EaXYgYSBzCiAgfCBhID09IDAgPSBGYWxzZQogIHwgYSA9PSAxID0gVHJ1ZSAKICB8IGEgPT0gMiA9IGlmIGV2ZW4gLiBkaWdpdFRvSW50IC4gQlMubGFzdCAkIHMgdGhlbiBUcnVlIGVsc2UgRmFsc2UKICB8IGEgPT0gMyA9IGlmIG1vZCAoIGJ5dGVTdW0gcyApIDMgPT0gMCB0aGVuIFRydWUgZWxzZSBGYWxzZQogIHwgYSA9PSA0ID0gaWYgbW9kICggZnN0IC4gZnJvbUp1c3QgLiBCUy5yZWFkSW50IC4gQlMuZHJvcCBrICQgcyApIDQgPT0gMCB0aGVuIFRydWUgZWxzZSBGYWxzZQogIHwgYSA9PSA1ID0gaWYgbW9kICggZGlnaXRUb0ludCAuIEJTLmxhc3QgJCBzICkgNSA9PSAwIHRoZW4gVHJ1ZSBlbHNlIEZhbHNlCiAgfCBhID09IDYgPSAgbnVtRGl2IDIgcyAmJiBudW1EaXYgMyBzIAogIHwgYSA9PSA3ID0gIGlmIEJTLmZvbGRyICggXHggeSAtPiBtb2QgKCAxMCAqIHkgKyBkaWdpdFRvSW50IHggKSA3ICkgMCBzID09IDAgdGhlbiBUcnVlIGVsc2UgRmFsc2UgCiAgfCBhID09IDggPSBpZiBtb2QgKCBmc3QgLiBmcm9tSnVzdCAuIEJTLnJlYWRJbnQgLiBCUy5kcm9wIG0gJCBzICkgOCA9PSAwIHRoZW4gVHJ1ZSBlbHNlIEZhbHNlCiAgfCBhID09IDkgPSBpZiBtb2QgKCBieXRlU3VtICBzICkgOSA9PSAwIHRoZW4gVHJ1ZSBlbHNlIEZhbHNlIHdoZXJlIAoJIGxlbiA9IEJTLmxlbmd0aCBzIAogICAgICAgICBrID0gbGVuIC0gMiAKICAgICAgICAgbSA9IGxlbiAtIDMgCgoKIApzb2x2ZSA6OiBCUy5CeXRlU3RyaW5nIC0+IEJTLkJ5dGVTdHJpbmcKc29sdmUgcyA9IEJTLnBhY2suc2hvdyAkICByZXQgd2hlcmUgCiAgICAgbXAgPSBCUy5mb2xkciAoIFx4IHkgLT4gTS5pbnNlcnRXaXRoICgrKSAoIGRpZ2l0VG9JbnQgeCApIDEgeSApIE0uZW1wdHkgcyAKCiAgICAga2V5ID0gTS5rZXlzIG1wIAogICAgIHJldCA9IGZvbGRyICggXHggeSAtPiBpZiBudW1EaXYgeCBzIHRoZW4geSArICggZnJvbUp1c3QgLiBNLmxvb2t1cCAgeCAkIG1wICkgIGVsc2UgIHkgICAgKSAwIGtleQoKCm1haW4gPSBCUy5pbnRlcmFjdCAkIEJTLnVubGluZXMgLiBtYXAgc29sdmUgLiBCUy5saW5lcwkJCQkJCQkJCQkJCQ==
-
upload with new input
-
result: Success time: 0.01s memory: 3636 kB returned value: 0
840893293987316962266593096523553790688457523047798727428903495259508675658356663641474419446402639023033731696911568889015045704281115842338022917418230531462083656643336032443155672776231138623432096651527135537784992142912920245634799737
41
-
result: Success time: 0.02s memory: 3636 kB returned value: 0



