HDOJ 1201 18岁生日
2015-07-16 08:08
309 查看
18岁生日
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23040 Accepted Submission(s): 7351
[align=left]Problem Description[/align]
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。
[align=left]Input[/align]
一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
[align=left]Output[/align]
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。
[align=left]Sample Input[/align]
1 1988-03-07
[align=left]Sample Output[/align]
6574
[align=left]Author[/align]
Gardon
[align=left]Source[/align]
Gardon-DYGG Contest 2
[align=left]Recommend[/align]
JGShining | We have carefully selected several similar problems for you: 1205 1215 1228 1235 1202
注意 if(yun(a)&&b==2&&c==29) return -1;
#include<stdio.h> #include<string.h> struct birth{ int year,mon,day; }bir[200]; int yun(int a){ if(a%400==0||(a%100!=0&&a%4==0)) return 1; else return 0; } int dday(int a,int b,int c){ int sum=0,i,starsum=0,endsum=0; if(yun(a)&&b==2&&c==29) return -1; for(i=(a+1);i<=(a+17);i++){ if(yun(i)) sum+=366; else sum+=365; } if(yun(a)){ switch(b){ case 1: starsum+=31; case 2: starsum+=29; case 3: starsum+=31; case 4: starsum+=30; case 5: starsum+=31; case 6: starsum+=30; case 7: starsum+=31; case 8: starsum+=31; case 9: starsum+=30; case 10: starsum+=31; case 11: starsum+=30; case 12: starsum+=31; break; } starsum-=c; } else{ switch(b){ case 1: starsum+=31; case 2: starsum+=28; case 3: starsum+=31; case 4: starsum+=30; case 5: starsum+=31; case 6: starsum+=30; case 7: starsum+=31; case 8: starsum+=31; case 9: starsum+=30; case 10: starsum+=31; case 11: starsum+=30; case 12: starsum+=31; break; } starsum-=c; } if(yun(a+18)){ switch(b){ case 1: endsum+=31; case 2: endsum+=29; case 3: endsum+=31; case 4: endsum+=30; case 5: endsum+=31; case 6: endsum+=30; case 7: endsum+=31; case 8: endsum+=31; case 9: endsum+=30; case 10: endsum+=31; case 11: endsum+=30; case 12: endsum+=31; break; } endsum=(366-endsum+c); } else { switch(b){ case 1: endsum+=31; case 2: endsum+=28; case 3: endsum+=31; case 4: endsum+=30; case 5: endsum+=31; case 6: endsum+=30; case 7: endsum+=31; case 8: endsum+=31; case 9: endsum+=30; case 10: endsum+=31; case 11: endsum+=30; case 12: endsum+=31; break; } endsum=(365-endsum+c); } sum+=(starsum+endsum); return sum; } int main(){ int n,i; scanf("%d",&n); for(i=0;i<n;i++){ memset(bir,0,sizeof(bir)); scanf("%d-%d-%d",&bir[i].year,&bir[i].mon,&bir[i].day); printf("%d\n",dday(bir[i].year,bir[i].mon,bir[i].day)); } return 0; }牛人代码(计算18年每年比365多几天,再加上):
<span style="color:#000000;">#include "stdio.h" int main() {int n,i,y,m,d,sum,x; scanf("%d",&n); while(n--) { sum=0;//18年每年比365多几天 scanf("%d-%d-%d",&y,&m,&d); if(m==2&&d==29) { printf("-1\n"); continue; } if((y%4==0&&y%100!=0||y%400==0)&&m<3) sum++; x=y+18; if((x%4==0&&x%100!=0||x%400==0)&&m>=3) sum++; for(i=y+1;i<y+18;i++) if(i%4==0&&i%100!=0||i%400==0) sum++; printf("%d\n",365*18+sum); } return 0; }</span>
相关文章推荐
- ttttt
- tttt
- 图片详解VMware DRS资源调度技术(组图)
- 【java web】--css+div总结
- 58二手售假?论旧物电商的正确打开方式
- nginx+memcached构建页面缓存应用
- VS 附加进程调试
- c语言中结构体内存对齐规则详解
- cenos7 中文输入法
- 移动加密那点事儿_值存储加密
- 【mongodb系统学习之五】mongodb启动最常用参数
- Linux 学习篇之二 vi命令
- LeetCode题解:Remove Element
- 手机卫士项目——手机防盗GPS追踪技术
- 黑马程序员-C语言基础七:进制
- apue第三版P106:ftw程序中使用的path_alloc
- [BZOJ2190][SDOI2008]仪仗队
- SQL——连接
- 黑马程序员-C语言基础六:函数
- C#几种截取字符串的方法(split 、Substring、Replace、remove)