fork download
  1. #include <stdio.h>
  2.  
  3. unsigned date(d, m, y)
  4. {
  5. unsigned res = d + (m>2?y-1:--y)*365 + y/4 - y/100 + y/400;
  6.  
  7. switch(m-1)
  8. {
  9. case 12: res += 31;
  10. case 11: res += 30;
  11. case 10: res += 31;
  12. case 9: res += 30;
  13. case 8: res += 31;
  14. case 7: res += 31;
  15. case 6: res += 30;
  16. case 5: res += 31;
  17. case 4: res += 30;
  18. case 3: res += 31;
  19. case 2: res += 28;
  20. case 1: res += 31;
  21. }
  22.  
  23. return res;
  24. }
  25.  
  26. int main(void)
  27. {
  28. unsigned d1, m1, y1, d2, m2, y2, key, res;
  29.  
  30. while (scanf("%u/%u/%u %u/%u/%u =>%u", &d1, &m1, &y1, &d2, &m2, &y2, &key) == 7)
  31. {
  32. res = date(d2,m2,y2) - date(d1,m1,y1) + 1;
  33. printf("%s %u %u\n", res==key?"OK":"FAIL", res, key);
  34. }
  35.  
  36. return 0;
  37. }
  38.  
Success #stdin #stdout 0s 2116KB
stdin
15/8/1984 17/3/1988 => 1311
13/1/1996 17/3/2002 => 2256
26/9/1993 10/9/2082 => 32492
17/4/1973 20/10/2082 => 39999
19/1/2001 21/11/2125 => 45597
24/4/1985 13/11/2148 => 59739
29/4/1998 26/9/2001 => 1247
24/6/1979 29/4/1984 => 1772
3/1/1977 16/10/1982 => 2113
9/9/1985 17/3/2078 => 33793
29/7/1978 11/5/2109 => 47769
21/6/1993 3/8/2012 => 6984
6/8/1987 30/10/2049 => 22732
10/2/2004 21/4/2086 => 30022
19/2/1980 27/4/2009 => 10661
5/5/1986 11/2/1989 => 1014
23/5/2015 14/2/2060 => 16339
18/9/2002 3/1/2129 => 46129
11/2/1987 1/1/2081 => 34294
10/11/1996 13/5/2080 => 30501
21/6/1999 18/5/2150 => 55119
18/10/1994 4/1/2055 => 21994
25/11/1975 7/8/2108 => 48469
12/1/2013 27/2/2131 => 43145
4/1/1970 14/7/2037 => 24664
9/11/1979 4/7/1996 => 6083
2/3/2005 11/11/2144 => 51024
1/3/1980 19/5/2075 => 34778
15/2/1991 7/8/2064 => 26838
15/2/2009 29/7/2018 => 3452
21/5/1972 1/2/2129 => 57235
13/12/2010 6/5/2064 => 19504
9/2/1990 13/5/2000 => 3747
21/12/2003 17/8/2065 => 22521
3/1/1978 2/10/2033 => 20362
3/9/2008 17/10/2110 => 37299
27/9/1974 9/7/2079 => 38272
26/11/1976 2/8/2063 => 31661
15/9/1998 21/8/2099 => 36866
18/2/1993 7/1/2114 => 44153
10/3/2005 10/7/2063 => 21307
31/1/2004 13/11/2038 => 12706
30/8/1970 16/2/1986 => 5650
16/12/1993 11/1/2117 => 44952
20/12/1985 24/11/2042 => 20794
31/1/2011 16/6/2058 => 17304
1/2/1989 11/12/2002 => 5062
30/12/1972 21/7/2020 => 17371
27/3/1998 4/10/2091 => 34160
28/11/2008 24/1/2024 => 5536
30/11/1999 17/5/2029 => 10762
26/10/2009 9/9/2043 => 12372
7/1/2010 21/2/2011 => 411
26/12/1974 15/5/2123 => 54197
26/3/2004 22/10/2050 => 17012
24/3/1976 19/3/2131 => 56608
15/11/1982 7/4/2053 => 25712
11/8/1987 14/4/2020 => 11936
9/8/1980 11/6/1983 => 1037
8/11/2001 7/4/2035 => 12204
23/8/1974 27/4/2115 => 51382
6/11/1996 9/8/2066 => 25479
6/5/1989 24/12/2094 => 38584
8/6/1995 10/7/2022 => 9895
6/6/2002 15/1/2023 => 7529
15/3/2012 24/4/2137 => 45696
20/1/1986 19/5/2101 => 42123
30/10/2007 12/2/2099 => 33344
16/3/1975 21/3/1985 => 3659
28/4/1976 2/8/2056 => 29317
22/12/1990 25/4/2114 => 45050
8/6/1999 29/12/2002 => 1301
31/7/1975 14/5/2043 => 24760
5/9/2005 30/6/2118 => 41206
20/7/1996 22/4/2113 => 42645
21/1/1999 13/6/2000 => 510
17/5/1992 23/1/1995 => 982
28/4/2004 23/6/2004 => 57
19/11/1980 29/5/2072 => 33430
23/10/1970 19/10/2022 => 18990
23/6/2006 3/11/2127 => 44328
19/8/1975 7/1/2061 => 31189
22/11/1972 10/2/2092 => 43545
7/3/1999 26/7/2071 => 26440
15/12/1971 5/5/2089 => 42877
26/5/2015 10/11/2142 => 46555
2/3/1971 29/5/2048 => 28214
13/1/1998 25/9/2024 => 9753
12/3/1998 4/7/2018 => 7420
19/12/1974 5/5/2047 => 26436
7/10/1994 8/2/2140 => 53085
25/7/1986 13/7/2021 => 12773
7/4/2015 19/5/2106 => 33280
17/1/1991 25/8/2006 => 5700
27/1/1979 17/3/2036 => 20870
21/8/2013 25/5/2024 => 3931
7/11/2001 1/4/2111 => 39957
23/6/2011 17/10/2038 => 9979
11/11/1998 12/5/2024 => 9315
29/5/1971 28/7/2082 => 40604
6/12/1974 14/12/2008 => 12428
18/4/1973 25/11/2080 => 39304
11/6/1997 4/6/2029 => 11682
11/5/1994 25/4/2063 => 25187
9/2/1972 19/7/2082 => 40339
25/1/1984 5/2/1999 => 5491
26/2/2000 30/6/2135 => 49433
21/2/1978 18/10/2070 => 33843
13/1/2015 20/9/2126 => 40793
12/11/1975 29/12/1989 => 5162
6/6/1984 17/7/2075 => 33279
26/4/1990 8/10/2108 => 43265
10/6/1994 19/4/2069 => 27343
17/12/2010 26/9/2020 => 3572
21/9/1982 2/7/2146 => 59820
18/12/1983 15/8/2058 => 27270
2/7/1993 11/3/2100 => 38969
2/10/2000 6/3/2094 => 34124
5/2/1976 23/11/1987 => 4310
15/10/1988 10/7/2039 => 18531
12/3/1971 17/9/1983 => 4573
24/11/1982 22/1/2042 => 21610
22/7/1979 8/10/1985 => 2271
16/9/1992 14/5/2015 => 8276
29/10/1987 8/3/2014 => 9628
20/7/1972 27/8/1974 => 769
29/5/1986 20/6/2044 => 21208
9/3/2006 10/2/2102 => 35037
=== generator ===
console.log("\n".repeat(128).replace(/(?=\n)/g, () =>
(a=[Math.random() * new Date, Math.random() * new Date * 4].sort((a,b)=>a-b).map(x=>((x=new Date(x)), ['setMilliseconds','setSeconds','setMinutes','setHours'].map(f=>x=new Date(x[f](0))), x))).map(d => [d.getDate(), d.getMonth()+1, d.getFullYear()].join("/")).join(" ") + " => " + ~~((a[1]-a[0]) / 1000/60/60/24 + 1)
))
stdout
OK 1311 1311
OK 2256 2256
OK 32492 32492
OK 39999 39999
OK 45597 45597
OK 59739 59739
OK 1247 1247
OK 1772 1772
OK 2113 2113
OK 33793 33793
OK 47769 47769
OK 6984 6984
OK 22732 22732
OK 30022 30022
OK 10661 10661
OK 1014 1014
OK 16339 16339
OK 46129 46129
OK 34294 34294
OK 30501 30501
OK 55119 55119
OK 21994 21994
OK 48469 48469
OK 43145 43145
OK 24664 24664
OK 6083 6083
OK 51024 51024
OK 34778 34778
OK 26838 26838
OK 3452 3452
OK 57235 57235
OK 19504 19504
OK 3747 3747
OK 22521 22521
OK 20362 20362
OK 37299 37299
OK 38272 38272
OK 31661 31661
OK 36866 36866
OK 44153 44153
OK 21307 21307
OK 12706 12706
OK 5650 5650
OK 44952 44952
OK 20794 20794
OK 17304 17304
OK 5062 5062
OK 17371 17371
OK 34160 34160
OK 5536 5536
OK 10762 10762
OK 12372 12372
OK 411 411
OK 54197 54197
OK 17012 17012
OK 56608 56608
OK 25712 25712
OK 11936 11936
OK 1037 1037
OK 12204 12204
OK 51382 51382
OK 25479 25479
OK 38584 38584
OK 9895 9895
OK 7529 7529
OK 45696 45696
OK 42123 42123
OK 33344 33344
OK 3659 3659
OK 29317 29317
OK 45050 45050
OK 1301 1301
OK 24760 24760
OK 41206 41206
OK 42645 42645
OK 510 510
OK 982 982
OK 57 57
OK 33430 33430
OK 18990 18990
OK 44328 44328
OK 31189 31189
OK 43545 43545
OK 26440 26440
OK 42877 42877
OK 46555 46555
OK 28214 28214
OK 9753 9753
OK 7420 7420
OK 26436 26436
OK 53085 53085
OK 12773 12773
OK 33280 33280
OK 5700 5700
OK 20870 20870
OK 3931 3931
OK 39957 39957
OK 9979 9979
OK 9315 9315
OK 40604 40604
OK 12428 12428
OK 39304 39304
OK 11682 11682
OK 25187 25187
OK 40339 40339
OK 5491 5491
OK 49433 49433
OK 33843 33843
OK 40793 40793
OK 5162 5162
OK 33279 33279
OK 43265 43265
OK 27343 27343
OK 3572 3572
OK 59820 59820
OK 27270 27270
OK 38969 38969
OK 34124 34124
OK 4310 4310
OK 18531 18531
OK 4573 4573
OK 21610 21610
OK 2271 2271
OK 8276 8276
OK 9628 9628
OK 769 769
OK 21208 21208
OK 35037 35037