您的位置:首页 > 其它

CCF-2015-09-2日期计算

2018-02-14 17:13 323 查看
原文:

问题描述
试题编号:201509-2
试题名称:日期计算
时间限制:1.0s
内存限制:256.0MB
问题描述:问题描述  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。输入格式  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数d,d在1至365之间。输出格式  输出两行,每行一个整数,分别表示答案的月份和日期。样例输入2015
80样例输出3
21样例输入2000
40样例输出2
9
试题分析:在日期计算中常常将每个月份天数加起来存放于数组中用于以后的操作,方便不少。判断哪个月第几天就与数组中存放数据有关,找到计算方法即可
AC代码:#include<iostream>
using namespace std;
int arr[]={31,28+31,31+28+31,30+31+28+31,31+30+31+28+31,30+31+30+31+28+31,31+30+31+30+31+28+31
,31+31+30+31+30+31+28+31,30+31+31+30+31+30+31+28+31,31+30+31+31+30+31+30+31+28+31,30+31+30+31+31
+30+31+30+31+28+31,31+30+31+30+31+31+30+31+30+31+28+31};
bool isy(int y)//判断是否为闰年,是则返回true
{
if(y%400==0||(y%4==0&&y%100!=0))
return true;

9f3a
return false;
}
void add()//若是闰年,2月份及后需要加一天
{
int i;
for(i=1;i<12;i++)
{
arr[i]+=1;
}
}
int main()
{
int i,y,d;
cin>>y;
cin>>d;
if(isy(y))//判断是否为闰年
add();
if(d<=31)
{
cout<<"1"<<endl;
cout<<d<<endl;
}
for(i=1;i<12;i++)
{
if(d>arr[i-1]&&d<=arr[i])
{
cout<<i+1<<endl;
cout<<d-arr[i-1]<<endl;
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: