SDUT2191Calendar
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2191
题意:给你两个年月日,让你算出其中经历了多少天输出 。
思路 :这个题是一个大大的模拟,可惜比赛的时候我都卡了一个半小时,又回去改了好久脑子都废了。今早上才在二师兄的点播之下才知道,原来年月日不一定上边的小,所以要判断一下,我就是因为这个WA了十几遍。。。。T_T。。。。。。。
#include<stdio.h>
#include<cmath>
#include<iostream> using namespace std ; struct node
{
int year ;
int month ;
int date ;
} ch,sh; int is_leap(int n)
{
if(n% == ||(n%==&&n%!=))
return ;
return ;
} int main()
{
int sum = ;
int mon[] = {,,,,,,,,,,,,} ;
scanf("%d:%d:%d",&ch.year,&ch.month,&ch.date) ;
scanf("%d:%d:%d",&sh.year,&sh.month,&sh.date) ;
if(ch.year > sh.year)
{
swap(ch.year,sh.year) ;
swap(ch.month,sh.month) ;
swap(ch.date,sh.date) ;
} if(ch.year == sh.year)
{
if(ch.month > sh.month)
{
swap(ch.year,sh.year) ;
swap(ch.month,sh.month) ;
swap(ch.date,sh.date) ;
}
if(ch.month == sh.month)
sum += fabs(sh.date-ch.date) ;
else
{
for(int i = ch.month+ ; i < sh.month ; i++)
sum += mon[i] ;
sum += (mon[ch.month]+-ch.date) ;
sum += sh.date ;
sum -= ;
if(is_leap(ch.year)&&ch.month <= &&sh.month > )
sum++ ;
}
}
else
{
for(int i = ch.year+ ; i <= sh.year- ; i++)
{
sum+= ;
if(is_leap(i))
sum++ ;
}
if(ch.month != )
{
for(int i = ch.month+ ; i <= ; i++)
sum += mon[i] ;
if(ch.month <= &&is_leap(ch.year))
sum ++ ;
}
sum += (mon[ch.month]+-ch.date) ;
if(sh.month!= )
{
for(int i = ; i <= sh.month- ; i++)
sum+=mon[i] ;
if(sh.month > &&is_leap(sh.year))
sum++ ;
}
sum += sh.date- ;
}
printf("%d\n",sum) ;
return ;
}
当然还有一种做法,因为题目中是说年份是大于等于1900小于等于2038的,所以当你输入两个月份的时候,就以1900年01月01日为准,用两个年份分别算从1900年01月01日到他们的距离,再求差,当然了,因为上下两个年份不知道谁大谁小,所以要加绝对值,这种方法简单不易出错,代码量还小一半左右,想实现的可以试试哦
SDUT2191Calendar的更多相关文章
随机推荐
- SQL Server 中WITH (NOLOCK)浅析(转潇湘隐者)
博文出处:http://www.cnblogs.com/kerrycode/p/3946268.html 概念介绍 开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其 ...
- js 后台弹窗
后台弹出操作成功,失败信息 /// <summary> /// 弹出信息,并跳转指定页面. /// </summary> public static void AlertAnd ...
- Word 2003 出现 向程序发送命令时出现问题 的 解决方案
这种原因出现的问题是word的模板出现问题. 解决方案是重新让word生成Norma.dot文档. 步骤: 1,按住视窗键+R或者开始菜单搜索文件和程序,粘贴 %appdata%\microsoft\ ...
- css圆角 四边投影
-moz-border-radius: 30px;-webkit-border-radius: 30px; border-radius:30px; -webkit-box-shadow:0 0 10p ...
- UserControl eventhander 注册问题
1. 如果主页面调用UserControl来画界面 2. UserControl局部变化需要通过事件通知主页面,通过UserControl定义EventHandler,主界面注册UserControl ...
- gridview 字段没有绑定由于column visible= false
由于gridview column visible=false, 后面执行gridview databound()操作 不会将数据绑定到相关的单元格,其实这个时候我们希望绑定数据只是不显示而已. 可以 ...
- linux系统时间修改及同步
时间修改date 月日时分年.秒date -s可以直接设置系统时间 比如将系统时间设定成1996年6月10日的命令如下.#date -s 06/10/96将系统时间设定成下午1点12分0秒的命令如下. ...
- [Oracle]Oracle学习小结(1)
1.查看Oracle数据库中的所有用户: (1)使用具有DBA权限的账户登录数据库: (2)执行select username from dba_users. SQL> conn sys 输入口 ...
- java 中的异常处理
一. 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架, 是Java语言健壮性的一个重要体现. Java把 ...
- 在后台对GameObject进行"创建"||"删除"动作
在后台对GameObject进行"创建"||"删除"动作 建立 public GameObject Pre;//在编辑器中用来绑定的Prefabs public ...