您的位置:首页 > 理论基础

CCF计算机职业认证--日期计算(简单的过程模拟)

2016-03-27 20:41 323 查看
题目描述:

问题描述

  给定一个年份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

个人见解:本题就是先对闰年与否进行判断,因为闰年的二月是29天,不是闰年的话二月是28天。再者每个月的天数不可能大于31天,所以你在下文中会看到一个非常巧妙的while();

个人AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int judge(int x)
{
if(x%100!=0&&x%4==0)
{
return 1;
}
if(x%400==0)
{
return 1;
}
return 0;
}

int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int i;
while(m>31)
{
for(i=1;i<=12&&m>31;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
m=m-31;
}
if(i==2&&judge(n)==1)
{
m-=29;
}
if(i==2&&judge(n)==0)
{
m-=28;
}
if(i==4||i==6||i==9||i==11)
{
m-=30;
}
}
}
printf("%d\n",i);
printf("%d\n",m);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: