最近没事干,于是在刷天勤论坛创办的一个OJ,题库都是些简单的题,还有各大高校历年的考研上机题,很适合我这种菜鸟。毕竟,没有参加过ACM比赛,也没有受过系统的算法训练。所以也就当成对自己的一种锻炼吧。
刷了一段时间后,逐渐发现一些问题了,有一次,看了题目的条件后,总是感觉不对,因为按照题目的要求算法,根本得不出来指定的输出结果,所以直接改了题目条件试了一下,果然给的条件错误,还好,那只是一个很明显的错误。然而,昨天又遇到一个题目,这回真的无从下手了。
题目描述
给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?
输入
输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。
输出
可能有多组测试数据,对于每组数据,输出一行,给出一个正整数,是5个数中小于a的数的和。
样例输入
10 1 2 3 4 11
样例输出
10
来源
题目还算简单,所以很快就写出了代码:
#includeint main() { int n; int temp; int result = 0; while(scanf("%d", &n) != EOF) { for(int i = 0; i < 5; i++) { scanf("%d", &temp); if(temp < n) result += temp; } printf("%d\n", result); } return 0; }
总共也就20来行,本地用题目的条件调试,也是OK的,但是提交到OJ以后,结果Wrong Answer。
想想之后发现,原来有种情况没有考虑到,如:2 3 3 3 3 3,这种输入的话,根本就没有结果,而我却输出了默认的0,但是又不知道应该输出什么,因为题目压根没提。
所以想想,原来OJ上的题目也是应该出的严密些才对,对于这种特殊情况必须要考虑到,否则做题人根本无从下手;还有就是,多给些输入输出吧,至少让做题人能够检验一些基本的边界条件,否则让人真的很郁闷。
后记:
后来发现了为什么是“Wrong Answer”了,更改后的代码如下:
#include int main() { int n; while(scanf("%d", &n) != EOF) { int result = 0; for(int i = 0; i < 5; i++) { int temp; scanf("%d", &temp); if(temp < n) result += temp; } printf("%d\n", result); } return 0; }