Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

四次提交后AC, 记录一下前三次的错误原因

Posted by leschus at 2021-04-20 10:23:23 on Problem 1003
第一次提交(没注意整数除法和浮点数除法的区别):
  处理每个target时,i从1开始计数,从而sum每次加的是1/(i+1).由于i被声明为int类型,因此这里加的其实是1/2==0,即每次sum其实加的都是0,这也就是最后提交结果显示超时(Time limit exceeded)的原因.
  修改:sum每次加1/(i+1.0).

第二次提交(解题逻辑错误, 输出格式错误):
  sum每次更新值后,i值没有相应的更新.
  输出格式除了i的大小,后面还有加" card(s)"字样.
  修改:sum值更新后,i自增1. 更新输出格式.

第三次提交(边界条件没弄清, scanf通配符错误):
  i从1开始,sum每次加的是1/(i+1.0),然后i++,随后再判断sum和target大小.这样导致循环退出时(即满足sum>=target),i的值多加了1.导致输出结果比预期结果大一.
  另外,while循环里的scanf通配符写成了%d, 导致虽然第一个target能过,但后续的target都被截断成了整数,从而输出结果错误.
  修改:i从0开始计数,内层循环中i先自增1,再更新sum. while循环里的scanf通配符改成%f.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator