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的更多相关文章

随机推荐

  1. Oracle 简介 三层结构

    引言: 主流数据库:sql server, oracle, my sql,IBM公司的DB2 ,oracle占有量很大 dbms(database management system)数据库管理系统 ...

  2. MacBook Pro 的照相机在哪?

    用于拍照 用于录制视频

  3. PHP自定义日期英文格式 Feb 11,2015

    背景:[PHP小工具]项目中,经常会要求多版本语言支持,而日期也是必不可少的组成元素. 英文日期书写顺序分英式和美式,举例如. 美国:月日年(January 8th,2014 或 January 8, ...

  4. [java学习笔记]java语言基础概述之函数的定义和使用&函数传值问题

    1.函数 1.什么是函数? 定义在类中的具有特定功能的一段独立小程序. 函数也叫做方法 2.函数的格式 修饰符   返回值类型    函数名(参数类型  形式参数1, 参数类型  形式参数2-) { ...

  5. struts2 的action 向页面传值

    写一个Action类: public class LoginAction{ public String execute(){ return SUCCESS; } public void setValu ...

  6. DCL_数据库控制语言

    DCL(Data Control Language)              -------是数据库控制语言.是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等) ...

  7. DTcms会员中心添加新页面-会员投稿,获得所有文章并分页

    DAL.article.cs /// <summary> /// 自定义:获得查询分页数据 /// </summary> public DataSet GetList(int ...

  8. 防止非授权用户调用DLL

    1.首先要创建一个密钥文件(*.snk)

  9. AJAX异步请求原理和过程

    AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它不是一种新的编程语言,而是一种使用现有标准的新方法. AJAX 基于 JavaS ...

  10. CSS 中的 em单位

    em的对应的像素值如何计算,一言以蔽之:em就是倍数当前元素font-size的倍数,其结果就是当前字体的像素值乘以em的值,至于font-size来自何处?有两个来源:继承自父元素和通过CSS直接设 ...