社区讨论

警示后人注意边界问题

B3752 [信息与未来 2019] 新斐波那契数列参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m1uhmhi4
此快照首次捕获于
2024/10/04 16:53
去年
此快照最后确认于
2025/11/04 18:05
4 个月前
查看原帖
如果你 WA 在第一个测试点,而后面的测试点却通过了,请检查你的代码当中有没有判断当前的 x 是否大于等于斐波纳契数列当前被比较的项。
错误示范:
HASKELL
findPairsFor :: Int -> IO ()
findPairsFor x = testPairsAtIndex x 3
 where
  testPairsAtIndex :: Int -> Int -> IO ()
  testPairsAtIndex _ 88 = return ()
  testPairsAtIndex x i 
    | mod (x - fibs ! (i - 1)) (fibs ! (i - 2)) == 0 = putStrLn(show (i - 1) ++ " " ++ show (1 + div (x - fibs ! (i - 1)) (fibs ! (i - 2)))) >> testPairsAtIndex x (i + 1)
    | otherwise = testPairsAtIndex x (i + 1)
正确示范:
HASKELL
findPairsFor :: Int -> IO ()
findPairsFor x = testPairsAtIndex x 3
 where
  testPairsAtIndex :: Int -> Int -> IO ()
  testPairsAtIndex _ 88 = return ()
  testPairsAtIndex x i 
    | x < fibs ! (i - 1) = return ()
    | mod (x - fibs ! (i - 1)) (fibs ! (i - 2)) == 0 = putStrLn(show (i - 1) ++ " " ++ show (1 + div (x - fibs ! (i - 1)) (fibs ! (i - 2)))) >> testPairsAtIndex x (i + 1)
    | otherwise = testPairsAtIndex x (i + 1)

回复

0 条回复,欢迎继续交流。

正在加载回复...