试题编号: | 201509-2 |
试题名称: | 日期计算 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 输入格式 输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。 输出格式 输出两行,每行一个整数,分别表示答案的月份和日期。 样例输入 2015 样例输出 3 样例输入 2000 样例输出 2 |
解题思路:
用一个数组来存放每个月的最大天数,若输入的y是闰年则将2月份的天数+1。当日期大于当前月份总天数时 不断地将日期减去当前月份总天数并将月份+1,直到剩余的天数不大于当前月份总天数即可,最后输出月份和日期。
100分代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,d;
cin >> y >> d;
int m = 1;
if((y%4==0&&y%100!=0)||y%400==0) //闰年
{
a[2]++; //2月有29天
}
while(d > a[m]) //日期大于当前月份总天数
{
d -= a[m];
m++;
}
cout << m << endl << d << endl;
return 0;
}