杭电1201之18岁生日
来源:互联网 发布:清洗数据方法有哪些 编辑:程序博客网 时间:2024/05/16 17:14
Problem Description
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。
Input
一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
Output
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。
Sample Input
11988-03-07
Sample Output
6574
分析:
题目本身不难,有一个地方不容易想到,若此人出生时某一年的2月29日,则该年必为闰年,且18年之后不可能为闰年,所以此时没有18岁生日!!!
AC代码如下:
#include "iostream"
#include "stdio.h"
using
namespace
std;
int
main(
int
argc,
char
* argv[])
{
int
y,m,d; //年月日
int
i;
int
n,sum; //sum记录总天数
int
a[15]={0,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年的12个月
int
b[15]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //平年的12个月份
cin>>n;
while
(n--)
{
scanf
(
"%d-%d-%d"
,&y,&m,&d);
if
(m==2&&d==29) //没有18岁生日的条件
{
cout<<-1<<endl;
}
else
{
sum=0;
if
(y%400==0||(y%4==0 && y%100!=0))
{
sum+=(a[m]-d);
for
(i=m+1;i<=12;i++)
{
sum+=a[i];
}
for
(i=y+1;i<y+18;i++)
{
if
(i%400==0||(i%4==0&&i%100!=0))
{
sum+=366;
}
else
{
sum+=365;
}
}
sum+=d;
if
((y+18)%400==0||((y+18)%4==0&&(y+18)%100!=0))
{
for
(i=1;i<m;i++)
{
sum+=a[i];
}
}
else
{
for
(i=1;i<m;i++)
{
sum+=b[i];
}
}
}
else
{
sum+=(b[m]-d);
for
(i=m+1;i<=12;i++)
{
sum+=b[i];
}
for
(i=y+1;i<y+18;i++)
{
if
(i%400==0||(i%4==0&&i%100!=0))
{
sum+=366;
}
else
{
sum+=365;
}
}
sum+=d;
if
((y+18)%400==0||((y+18)%4==0&&(y+18)%100!=0))
{
for
(i=1;i<m;i++)
{
sum+=a[i];
}
}
else
{
for
(i=1;i<m;i++)
{
sum+=b[i];
}
}
}
cout<<sum<<endl;
}
}
return
0;
}
0 0
- 杭电1201之18岁生日
- 杭电ACM 1201 18岁生日
- 18岁生日(杭电1201)
- 杭电1201 18岁生日
- 杭电 HDU 1201 18岁生日
- 杭电1201 18岁生日
- 杭电 1201 18岁生日
- 杭电1201 18岁生日
- 杭电1201 18岁生日
- 【杭电】[1201]18岁生日
- 【杭电-oj】-1201-18岁生日
- 杭电 1201 18岁生日
- 【杭电1201】18岁生日
- 【杭电1201】18岁生日
- 杭电acm----1201 18岁生日
- 杭电ACM 1201 18岁生日
- 杭电 1201 18岁生日
- 杭电 OJ 1201 18岁生日
- 【leetcode】242. Valid Anagram
- B00013 字符串哈希函数
- 程序锁的看门狗
- C# Json序列化工具--Newtonsoft.Json简介和使用
- CGLIB 代理机制
- 杭电1201之18岁生日
- 使用github mac客户端上传代码
- build.gradle 参数说明
- 小白教程 Ubuntu 14 Jstorm的搭建与配置
- Libgdx 之Actions 动作类
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
- [翻译]AKKA笔记 - ACTOR生命周期 - 基本 -5
- Android DrawerLayout和Navigationview实现类似于QQ的侧面导航
- iOS封装checkbox