fork(8) download
  1. #include<stdio.h>
  2. #include<math.h>
  3. typedef struct
  4. {
  5. int d, m, y;
  6. } Date;
  7. int isLeap(int y)
  8. {
  9. return (y%4==0)&&(y%100!=0)||(y%400==0);
  10. }
  11. int diff(Date d1, Date d2)
  12. {
  13. int dd1=0, dd2=0, y, yref;
  14. yref=(d1.y<d2.y)?d1.y:d2.y;
  15. for(y=yref;y<d1.y;y++)
  16. if(isLeap(y))
  17. dd1++;
  18. if(isLeap(d1.y) && d1.m>2) dd1++;
  19. dd1+=daysTill(d1.m)+d1.d+(d1.y-yref)*365;
  20. for(y=yref;y<d2.y;y++)
  21. if(isLeap(y))
  22. dd2++;
  23. if(isLeap(y) && d2.m>2) dd2++;
  24. dd2+=daysTill(d2.m)+d2.d+(d2.y-yref)*365;
  25. return abs(dd2-dd1);
  26. }
  27. int daysTill(int month)
  28. {
  29. int days=0;
  30. switch(month)
  31. {
  32. case 1: days=0;
  33. break;
  34. case 2: days=31;
  35. break;
  36. case 3: days=59;
  37. break;
  38. case 4: days=90;
  39. break;
  40. case 5: days=120;
  41. break;
  42. case 6: days=151;
  43. break;
  44. case 7: days=181;
  45. break;
  46. case 8: days=212;
  47. break;
  48. case 9: days=243;
  49. break;
  50. case 10:days=273;
  51. break;
  52. case 11:days=304;
  53. break;
  54. case 12:days=334;
  55. break;
  56. }
  57. return days;
  58. }
  59. main()
  60. {
  61. int t;
  62. Date d1, d2;
  63. scanf("%d",&t);
  64. while(t--)
  65. {
  66. scanf("%d %d %d",&d1.d,&d1.m,&d1.y);
  67. scanf("%d %d %d",&d2.d,&d2.m,&d2.y);
  68. printf("%d\n",diff(d1,d2));
  69. }
  70. }
Success #stdin #stdout 0s 2012KB
stdin
1
23 9 1960
11 3 2015
stdout
19892