因为最近买了本书《程序设计导引及在线实践》,所以改在poj.grids.cn上做题目了,这本书感觉简单了些,但是对于入门来说还是不错。
今天做了挺多道水题的,不过一些题还是有相当陷阱的。
2931 期末考试第二题——比较数字个数 这道题目输入得用gets,因为字符串中包含空格,先没考虑到,wa了几次。
2709 求出e的值 这道题计算n!时我用了int,显然不够,应该用bouble,而且题目明明都提示了用double...
2967 特殊日历计算 这道题最bt,我总是超时,想了半天都不知道哪儿错了,最后在网上一个女生blog上看到通过的程序,一对比,发现自己在求给定日期距离2000年1月1日有多少天时,是1年1年判断,累加算的,题目中要求2000 <= year <= 50000,因此很可能在这里超时了,我看到的解法是
days = (year - 2000) * 365 + (year -2000) / 4 - (year - 2000) / 100 + (year - 2000) / 400;//年
days += !isLeapyear(year);
另外还有一种解法是
days = ( year - 2000 ) * 365 + ( year - 1997 ) / 4 - ( year - 1901 ) / 100 + ( year - 1601 ) / 400;
反正都比累加好~~
今天做了挺多道水题的,不过一些题还是有相当陷阱的。
2931 期末考试第二题——比较数字个数 这道题目输入得用gets,因为字符串中包含空格,先没考虑到,wa了几次。
2709 求出e的值 这道题计算n!时我用了int,显然不够,应该用bouble,而且题目明明都提示了用double...
2967 特殊日历计算 这道题最bt,我总是超时,想了半天都不知道哪儿错了,最后在网上一个女生blog上看到通过的程序,一对比,发现自己在求给定日期距离2000年1月1日有多少天时,是1年1年判断,累加算的,题目中要求2000 <= year <= 50000,因此很可能在这里超时了,我看到的解法是
days = (year - 2000) * 365 + (year -2000) / 4 - (year - 2000) / 100 + (year - 2000) / 400;//年
days += !isLeapyear(year);
另外还有一种解法是
days = ( year - 2000 ) * 365 + ( year - 1997 ) / 4 - ( year - 1901 ) / 100 + ( year - 1601 ) / 400;
反正都比累加好~~