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. C#事件解析

    事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂.而这些东西却往往又是编程中常用且非常重要的东西.大家都知道windows消息处理机制的重要,其实C#事件就是基于window ...

  2. setTimeout、clearTimeout、setInterval,clearInterval ——小小计时器

    先看下效果 话不多说上代码~ <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Typ ...

  3. How to Set Directory Permissions at Install Time using an MSI Created Using Windows Installer XML (WIX)

    Original Link:  http://blogs.msdn.com/b/cjacks/archive/2008/12/04/how-to-set-directory-permissions-a ...

  4. 专家解说IT行业存在哪些安全风险

    本人为原创作品:e良师益友 ,转载是并且注明 网络带动了IT行业的发展,同时也带来了安全风险,国外的专家分析2014年IT行业存在的11个安全隐患,随着越来越多技术的不断开发,为方便人们记忆账号,产生 ...

  5. JPA && Spring Data && Spring Data JPA

    1.JPA  Java Persistence API,用于对象持久化的一组API,JPA本身是一组规范,让开发者用同一种方式访问不同的ORM框架.其实也就是java实体对象和关系型数据库建立起映射关 ...

  6. myeclipse 8.5 破解

    步骤: (1)新建一个java project项目 (2)在src目录下新建一个名为MyEclipseGen的Java文件(MyEclipseGen.java) (3)MyEclipseGen.jav ...

  7. ENVI栅格文件增强后将LUT保存完输出img图像进行分类

    ENVI栅格文件储存 图像原始的DN(Digital Number)值记录图像的光谱信息,不能轻易更改。在窗口中显示的一般是经过拉伸等增强处理的LUT上的灰度值,在保存文件时,就有不同的方式。 1.  ...

  8. RecursiveDirectoryIterator目录操作类

    /** * @author Funsion Wu * @abstract SPL使用案例,全国首发,技术分享,欢迎转帖 */ class Dir extends RecursiveDirectoryI ...

  9. VB语言基础

    一.常用的关键字 Dim Private Sub  Public End If Else Form Me Single As Integer Unload Do While MessageBox等 二 ...

  10. django开发框架-view & template

    django框架的主要模型是MVT,Model模型,View视图,Template模板,基于基本的HttpRequest方式. django支持的数据库有四种:PostgreSQL,MySQL, Or ...