为什么只有20分!求助大犇!!!!!

P1464 Function

好吧,找了大约1个小时的错误结果发现。倒数5行。-w(x-1……c-1)打错了,应该打成-w(x-1……z-1)。T\_T哎。后悔当时写的时候太匆忙了
by 耗纸大大 @ 2016-10-01 20:15:50


这是道水题,加我QQ:2905481468
by 陌殇解说 @ 2016-11-27 21:07:17


看题目,如果从date1到date2之间的所有日期都判断一遍,把中间日期一个一个判断一遍会**很麻烦**,而且一个一个正确的日期弄出来也不容易 再考虑到每一年只可能有一个回文日期,因此我们先把date1和date2的前四位(即首尾的年份)截取出来,然后中间的每一年都**生成一个假定的回文日期**, **判断**生成的回文日期是不是一个正确的日期,如果是就inc(ans),最后输出ans即可 ```cpp var d1,d2,make:string; left,right,ans,i,j:longint; y:array[0..13] of integer; function check(k:string):boolean;//定义判断日期是否标准的函数 var year,month,day,m:longint; begin val(copy(k,1,4),year);//截取生成的日期的年(下同) val(copy(k,5,2),month); val(copy(k,7,2),day); if ((year mod 4=0) and (year mod 100<>0)) or (year mod 400=0) then y[2]:=29 else y[2]:=28;//判断是否是闰年,是则把二月的天数换为29,否则为28 if ((month<=0) or (month>=13)) then exit(false);//如果月份≤0或≥13,那么返回false(下同) if ((day<=0) or (day>=(y[month]+1))) then exit(false); exit(true);//发现满足题意的回文日期一枚,返回true! end; begin y[1]:=31;y[2]:=28;y[3]:=31;y[4]:=30;y[5]:=31;y[6]:=30;y[7]:=31;y[8]:=31; y[9]:=30;y[10]:=31;y[11]:=30;y[12]:=31;//虽然很笨,但是能把每个月的日期弄好就好了啦……⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ readln(d1); readln(d2); val(copy(d1,1,4),left);//起始年弄出来! val(copy(d2,1,4),right);//结尾年弄出来! ans:=0; for i:=left to right do begin str(i,make); for j:=4 downto 1 do make:=make+make[j];//生成待验货的回文日期完毕! if check(make) then inc(ans);//如果检验合格的,那么就inc(ans)! end; writeln(ans);//把合格品的数量输出来! end. ```
by 陌殇解说 @ 2016-11-27 21:08:11


楼上题解好像发错地方了
by nonanalyzer @ 2017-01-30 18:58:30


???
by bestzzy @ 2017-02-12 09:58:15


|