1. 程式人生 > >CCF——日期計算

CCF——日期計算

問題描述

 給定一個年份y和一個整數d,問這一年的第d天是幾月幾日
 注意閏年的2月有29天,滿足下面條件之一的是閏年:
 (1)年份是4的整數倍,而且不是100的整數倍
 (2)年份是400的整數倍

輸入格式

 輸入的第一行包含一個整數y,表示年份,年份在1900到2015之間
 輸入的第二行包含一個整數d,在1至365之間

輸出格式

 輸出兩行,每行一個整數,分別表示答案的月份和日期

樣例輸入

 2015
 80
 2000
 40

樣例輸出

3
21
2
9

解題思路

 此題思路比較簡單,先判斷是閏年還是平年,再根據所輸入的日期和每個月的固定天數進行比較,如果大,則減去,如果小,則就是答案,不過需要注意的是,評分標準上,必須要把所有條件用上,如上述判定閏年的兩個條件必須用上,不然答案就算對了,也無法給滿分。
 上程式碼

Code

#include <iostream>
using namespace std;
int a1[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int main()
{
    int i, day = 0;
    int date, year;
    while (cin >> year >> date)
    {
        if ((year % 400==0)||(year%4==0&&year%100!=0))
        {
            a1[2] = 29
; } int s = 0; for (i = 1; i < 13; i++) { s += a1[i]; if (date < s) { s -= a1[i]; day = date-s; break; } } cout << i << endl; cout << day
<< endl; } return 0; }