Saleh127

UVA 602

Jul 24th, 2021
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int tt; cin>>tt; for(int cs=1;cs<=tt;cs++)
  5. string day[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  6. string month[] = {"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
  7. ll days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  8.  
  9. ll old(ll m,ll d,ll y) ///date before 09/02/1752
  10. {
  11. if(y<1752) return 1ll;
  12. else if((y==1752 && m<9) || (y==1752 && m==9 && d<=2)) return 1ll;
  13. else return 0ll;
  14. }
  15.  
  16. ll ly(ll y) ///leap year
  17. {
  18. if(y<1752) return (y%4==0);
  19. else return (y%4==0 && (y%100!=0 || y%400==0));
  20. }
  21.  
  22. ll valid(ll m,ll d,ll y) ///valid date
  23. {
  24. if(d<=0 || d>days[m] || m<=0 || m>12 || y<=0) return 0ll;
  25. else if(d>=3 && d<=13 && m==9 && y==1752) return 0ll;
  26. else return 1ll;
  27. }
  28.  
  29. int main()
  30. {
  31. ios_base::sync_with_stdio(0);
  32. cin.tie(0);
  33. cout.tie(0);
  34.  
  35. ll n,m,i,j,k,l,d,y;
  36.  
  37. while(cin>>m>>d>>y && (m+d+y)!=0)
  38. {
  39. days[2]=28+ly(y);
  40.  
  41. l=0;
  42.  
  43. if(valid(m,d,y))
  44. {
  45. l=d;
  46.  
  47. for(i=1; i<m; i++)
  48. {
  49. l+=days[i];
  50. }
  51.  
  52. for(i=1; i<y; i++)
  53. {
  54. l+=365 + ly(i);
  55. }
  56.  
  57. if(old(m,d,y)) l+=12; ///rules of old date;
  58. else l+=1;
  59.  
  60. l%=7;
  61.  
  62. cout<<month[m]<<" "<<d<<", "<<y<<" is a "<<day[l]<<endl;
  63. }
  64. else
  65. {
  66. cout<<m<<"/"<<d<<"/"<<y<<" is an invalid date."<<endl;
  67. }
  68.  
  69. days[2]=28;
  70. }
  71.  
  72.  
  73. return 0;
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment