程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 世界完全對稱日計算(C++)

世界完全對稱日計算(C++)

編輯:C++入門知識

 

今天是世界完全對稱日(2011 1102),所以就想寫一個算法來計算一段時間內所有的完全對稱日。看看有多少日期是世界完全對稱日

 

描述:
輸入開始和結束年份,求出其中所有的完全對稱日。

輸入:

輸入開始年份startYear和結束年份endYear (startYear < endYear);

輸出:

輸出所要求的完全對稱日。

 

解題思路:

1)根據月份和天,逆序後算出對應的年份的日期 (如1月1號 -> 0101 -> 1010,則年份是1010年)

2)判斷計算出來的年份是否在輸入的年份之間

3)排除非閏年時2月29號這個不合法日期

 

代碼:

 

 

#include <vector>

#include <string>

#include <sstream>

#include <iomanip>

#include <algorithm>

using namespace std;

 

const int MonthDays[] ={

    31,29,31,30,31,30,31,31,30,31,30,31

};

 

class SymmetricalDay

{

public:

 

    bool isLeap(int year)

    {

        return (( year % 4 == 0 ) && ( year % 100 != 0 ) || ( year % 400 == 0 ));

    }

 

    vector<string> getDays(int startYear, int endYear)

    {

        vector<string> results;

 

        for (int curMonth = 1; curMonth <= 12; ++curMonth)

        {

            for (int curDay = 1; curDay <= MonthDays[curMonth-1]; ++curDay)

            {       

                ostringstream tempValue;

 

                tempValue << setw(2) << setfill('0') << curMonth;

                tempValue << setw(2) << setfill('0') << curDay;

 

                string strData(tempValue.str());

                string strReverse(strData.rbegin(), strData.rend());

 

                istringstream yearValue(strReverse);           

 

                int curYear = 0;

                yearValue >> curYear;

 

                if (curYear >= startYear && curYear <= endYear)

                {                   

                    if (!isLeap(curYear) && curMonth==2 && curDay==29)

                    {

                        continue;

                    }

 

                    string tempResult = yearValue.str() + "" + tempValue.str();

                    results.push_back(tempResult);

                }

            }

        }

 

        sort(results.begin(), results.end());

 

        return results;

    }

};

作者 Quincy

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved