/ALGOPRO6 - Giá trị của năm

<Problem>

https://www.spoj.com/PTIT/problems/ALGOPRO6/
              #include <iostream>
        using namespace std;
         
        int sumDigit(int n) {
          int t = 0;
          while (n > 0) {
            t += n % 10;
            n = n / 10;
          }
          return t;
        }
         
        int main() {
          int n;
          cin >> n;
         
          int sum28 = 0;
         
          for (int i = 1; i <= 28; i++) {
            sum28 += sumDigit(i);
          }
         
          int sum29 = sum28 + 2 + 9;
          int sum30 = sum29 + 3 + 0;
          int sum31 = sum30 + 3 + 1;
         
          long long sumYear = 0;
          if ((n % 4 == 0 && n % 100 != 0) || (n % 100 == 0 && n % 400 == 0)) {
            sumYear += 366 * sumDigit(n);
          }
          else {
            sumYear += 365 * sumDigit(n);
          }
         
          for (int i = 1; i <= 12; i++) {
            switch (i) {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12: {
              sumYear += 31 * sumDigit(i);
              sumYear += sum31;
              break;
            }
            case 2: {
              if ((n % 4 == 0 && n % 100 != 0) || (n % 100 == 0 && n % 400 == 0)) {
                sumYear += 29 * sumDigit(i);
                sumYear += sum29;
              }
              else {
                sumYear += 28 * sumDigit(i);
                sumYear += sum28;
              }
              break;
            }
            case 4: case 6: case 9: case 11: {
              sumYear += 30 * sumDigit(i);
              sumYear += sum30;
              break;
            }
            }
          }
         
          cout << sumYear << endl;
         
          return 0;
         
        }