1 solutions
-
0
C++ :
#include <cstdio> int main(void) { int y0, m0, d0, y, m, d, s=0, i; int md[12]={31,28,31,30,31,30,31,31,30,31,30,31}; scanf("%d%d%d%d%d%d", &y0, &m0, &d0, &y, &m, &d); y0 += 19; //目标年份,第20个生日,只需要过19年 if(y%400==0 || y%4==0&&y%100>0) md[1] = 29; for(s=-d, i=0; i<m-1; ++i) s -= md[i]; // 负数表示当年已过的天数 for(; y<y0; ++y) { //中间年份的天数 if(y%400==0 || y%4==0&&y%100>0) s += 366; else s += 365; } if(y%400==0 || y%4==0&&y%100>0) md[1] = 29; else md[1] = 28; for(i=0, s+=d0; i<m0-1; ++i) s += md[i]; // 加上目标年份的天数 printf("%d\n", s); return 0; }Pascal :
var y,m,d:longint; y0,m0,d0:longint; s,i,p,q:longint; function year(n:longint):longint; begin if (n mod 4=0) and (n mod 100<>0)or(n mod 400=0) then year:=366 else year:=365; end; function month(n,nian:longint):longint; begin case n of 1,3,5,7,8,10,12:month:=31; 4,6,9,11:month:=30; 2:begin if year(nian)=365 then month:=28 else month:=29; end; end; end; begin readln(y,m,d); readln(y0,m0,d0); y:=y+19; for i:=1 to m-1 do p:=p+month(i,y); p:=p+d; for i:=1 to m0-1 do q:=q+month(i,y0); q:=q+d0; for i:=y0 to y-1 do s:=s+year(i); s:=s+p-q; writeln(s); end.
- 1
Information
- ID
- 17815
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By