我有下面的代碼片段衛隊被跳過
module Main where
main :: IO()
main = do
ne <- getLine
c <- getLine
putStrLn $ show $ foo c (words ne)
foo :: String -> [String] -> Integer
foo c (n:e:_) =
foo' (read c::Integer) (read e::Integer) (read n::Integer) [2..]
where foo' c e n (x:xs)
| mod (x^e) n == c = mod x n
| otherwise = foo' c e n xs
如預期給出如下輸入的時候,除了其中一期工程:
9 3
2
第1保護被跳過的輸入無限循環。 我的看法是, foo'
應該首先與2 9 3
調用,這將導致mod (2^9) 3 == 2
這是真實的,應該導致值mod 2 9
,但情況並非如此。
我相信我缺少一些小事在這裏,但我只是不能看到它... ...
總是有些微不足道的事......謝謝! – ezpz 2009-10-07 12:08:15