杭电水题之1201
来源:互联网 发布:新三板数据库 编辑:程序博客网 时间:2024/05/01 13:14
这题比较水,就是一个判断闰年的问题,只是中间有一些细节要注意,我们说十八岁生日就是过了十八年,就像抓周就是满一岁,那就是过了一年。只是这个之中需要考虑一个平年还是闰年的问题,因为只有闰年才有2月29,别的没有,所有如果出生的时候就是闰年并且刚好是2月29的话,就不会有十八岁生日了,自然就是输出-1.再者就是需要讨论一下再者十八年之中的闰年个数。
首先看看是出生的时候是闰年的情况,难么在十八岁十八年之中需不需要将出生的这一年到下一年的这个时候算成是366天,这就得看出生的日期了。比如2月29之前出生的,到下一个月的这个时候,我们就有366天,因为在二月他度过了2月29这一天比平常多一天。
再者就是最后一个年是不是闰年(中间的不需要额外考虑,是闰年就是366天,不是就是365天),如果最后一年是闰年,就需要考虑出生的时间,如果是2月28(只有28)之后出生的就有这么一天多出来,因为 重倒数第二年到组后一年是不是度过了最后一年的29号需要看出生,现在出生在28之后,就是可以度过29号这一天,那么就有366天。
下面提供几组数据这个数据对了基本就可以AC
132004-1-222004-2-282004-2-292004-4-202003-2-202003-2-282003-3-202002-2-202002-2-282002-3-202001-2-202001-2-282001-3-20结果:65756575-16574657565756575657465746575657465746574最后在提供一个AC的的代码仅供参考。
include<iostream>using namespace std;int main(){ int N; char a,b; int year,month, day,s,num,i; cin>>N; while(N--) { num=0; s=0; cin>>year>>a>>month>>b>>day; if((year%4==0&&year%100!=0)||year%400==0) { if(month==2&&day==29) s=-1; else if(month==1) s=366; else if(month==2&&day<=28) s=366; else s=365; } else s=365; for(i=1;i<=17;i++) { year+=1; if((year%4==0&&year%100!=0)||year%400==0) num+=366; else num+=365; } year+=1; if((year%4==0&&year%100!=0)||year%400==0) { if(month>=3) num+=1; else num+=0; } if(s==-1) s=-1; else s+=num; cout<<s<<endl; } return 0;}
- 杭电水题之1201
- 杭电水题之2023
- 杭电水题之2030
- 杭电水题之1713
- 杭电水题之1076
- 杭电水题之4143
- poj 1201(查分约束之spfa)
- 杭电1201之18岁生日
- 復之之理
- 博学之,审问之,慎思之,明辨之,笃行之
- 博学之,审问之,慎思之,明辨之,笃行之
- 基于visual Studio2013解决面试题之1201链表去重
- 雪,之韵,之恋,之......
- 年终总结之天涯之无敌之言论
- 万源之源之drupal 之 drupal_flush_all_caches
- 编程之美------之数字之魅
- 之记录员
- 孔乙己之
- T-SQL 高级应用之数据汇总(聚合函数之1 compute)
- QuickServer
- C++中this指针的用法详解
- 为什么把数据库的表名设置为“mod"就回出错呢?
- VC中基于 Windows 的精确定时
- 杭电水题之1201
- 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
- 快速排序,void Qsort(void *base,int nelem,int width, int (*fcmp)(const void *,const void *))的实现。
- Index-Organized Tables
- 求pagerank算法的实验数据
- perl 字符串基本操作
- HTTP协议返回状态码大全
- newlisp获取并计算内存负载
- R-write.table族存出数据多一列