18岁生日(闰年判断+水)
2016-07-23 15:23
369 查看
Description
当你还是18岁的时候,那个曾经一起追过的女孩刚好也是18岁,而且她的生日就要到了,你突然想到一个问题,是不是每个人到18岁生日所经过的天数都是一样的呢?我们来算一下吧
Input
首先输入一个整数n,表示有n组数据,格式是YYYY-MM-DD。
Output
对于每组数据输出一行,每行一个数,表示从出生到18岁生日所经过的天数。如果没有18岁生日,就输出-1。
Sample Input
2
1992-2-1
1988-3-5
Sample Output
6575
6574
题解:1、要求里的没有18岁生日仅仅指于闰年的2月29日出生,不代表还没有到18岁就是没有生日。
2、计算18年有多少天,无非就是判断这18年里有几个闰年,出生那年过的天数加上18岁那年过的天数可以凑齐为一年。
3、判断生日在2月28之前还是之后,如果在之后就判断出生那年的下一年开始,往后18年里几个闰年,之前就判断从出生那年开始,往后18年里有几个闰年。
代码(C)
当你还是18岁的时候,那个曾经一起追过的女孩刚好也是18岁,而且她的生日就要到了,你突然想到一个问题,是不是每个人到18岁生日所经过的天数都是一样的呢?我们来算一下吧
Input
首先输入一个整数n,表示有n组数据,格式是YYYY-MM-DD。
Output
对于每组数据输出一行,每行一个数,表示从出生到18岁生日所经过的天数。如果没有18岁生日,就输出-1。
Sample Input
2
1992-2-1
1988-3-5
Sample Output
6575
6574
题解:1、要求里的没有18岁生日仅仅指于闰年的2月29日出生,不代表还没有到18岁就是没有生日。
2、计算18年有多少天,无非就是判断这18年里有几个闰年,出生那年过的天数加上18岁那年过的天数可以凑齐为一年。
3、判断生日在2月28之前还是之后,如果在之后就判断出生那年的下一年开始,往后18年里几个闰年,之前就判断从出生那年开始,往后18年里有几个闰年。
代码(C)
#include<stdio.h> int main() { int n,d,y,m,sum; scanf("%d",&n); for(int j=1;j<=n;j++) { sum=0; scanf("%d-%d-%d",&y,&m,&d); if(m==1)//分月份判断生日在2月28之前还是之后 { for(int i=y;i<y+18;i++) { if((i%4==0&&i%100!=0)||i%400==0) { sum=sum+366; } else sum=sum+365; } } else if(m>2) { for(int i=y+1;i<=y+18;i++) { if((i%4==0&&i%100!=0)||i%400==0) { sum=sum+366; } else sum=sum+365; } } else if(m==2) { if(d==29) sum=-1; else { for(int i=y;i<y+18;i++) { if((i%4==0&&i%100!=0)||i%400==0) { sum=sum+366; } else sum=sum+365; } } } printf("%d\n",sum); } return 0; }
相关文章推荐
- 闰年判断
- 华为机试—身份证号码验证
- 蓝桥杯-基础练习之闰年判断——BASIC-1
- 判断闰年
- 杭电 1276 士兵队列训练问题
- 蓝桥杯 基础练习 闰年判断
- ACM俱乐部练习--A+B 输入输出练习I
- ACM俱乐部练习-A+B 输入输出练习II
- ACM俱乐部练习-A+B 输入输出练习III
- ACM俱乐部练习-A+B 输入输出练习IV
- ACM俱乐部练习- A+B 输入输出练习V
- ACM俱乐部练习-A+B 输入输出练习VI
- ACM俱乐部练习-求素数
- ACM俱乐部练习-矩阵对角求和
- 1041: A+B--2010年浙江大学计算机及软件工程研究生机试真题
- 判断闰年,闰年的由来
- 【C语言】求1000-2000年的闰年,并统计个数
- 寻找1000-2000的闰年
- NOJ 1008.第几天
- 蓝桥杯-闰年判断