2017年9月24日 星期日

[UVa]12019 - Doom's Day Algorithm(C++)

題目說已以2011年來算,輸入測資數量、月份、日期,來輸出這天星期幾。
如果是8/12 -> 把一到七月天數加起來(底線部分),加上天數 = 31+28+31+30+31+30+31+12
如果是1/6 -> 只要天數 = 6

  1. #include <iostream>  
  2. using namespace std;  
  3.    
  4. int main() {  
  5.     int n, month, day, totle = 0;  
  6.     int years_day[12] =   //儲存每月的天數
  7.         {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  
  8.     cin >> n;  
  9.     for(int i = 0; i < n;i++)  //有幾筆測資就重複幾次
  10.     {  
  11.         cin >> month >> day;  //輸入月份和日期
  12.         if(month == 1)  //如果是一月
  13.         {  
  14.             totle = (day + 5) % 7;  
  15.         }  
  16.         else  //一月以外的月份
  17.         {  
  18.             for(int j = 0; j < (month-1);j++)  
  19.             {  
  20.                 totle = totle + years_day[j];  
  21.             }  
  22.             totle = (totle + day + 5)%7;  
  23.         }  
  24.    
  25.         switch(totle)  //由餘數判定現在星期幾
  26.         {  
  27.             case 0:  
  28.                 cout << "Sunday" << endl;  
  29.                 break;  
  30.             case 1:  
  31.                 cout << "Monday" << endl;  
  32.                 break;  
  33.             case 2:  
  34.                 cout << "Tuesday" << endl;  
  35.                 break;  
  36.             case 3:  
  37.                 cout << "Wednesday" << endl;  
  38.                 break;  
  39.             case 4:  
  40.                 cout << "Thursday" << endl;  
  41.                 break;  
  42.             case 5:  
  43.                 cout << "Friday" << endl;  
  44.                 break;  
  45.             case 6:  
  46.                 cout << "Saturday" << endl;  
  47.                 break;  
  48.         }  
  49.         totle = 0;  
  50.     }  
  51.     return 0;  
  52. }
  53.   

1 則留言: