模拟!

 /*
计算过了D天后的日期
之前D天的日期
*/
#include<stdio.h>
int judge_year( int year ){
if( (year%==&&year%!=)||(year%==) )
return true;
else
return false;
}
int judge_month( int mon ){
if( mon==||mon==||mon==||mon==||mon==||mon==||mon== )
return true;
else
return false;
}
int main(){
int ca;
//freopen("cmp.txt","w",stdout);
scanf("%d",&ca);
while( ca-- ){
int n;
scanf("%d",&n); int year,mon,day;
year = ;
mon = ;
day = ;
int sum = n;
while( sum> ){
if( judge_year(year)==true ){ //printf("sum=%d,,year = %d,mon=%d,day=%d\n",sum,year,mon,day);
if( mon== ){
int left = -day;
if( sum>left ){
sum = sum-(left+);
mon++;
day = ;
}
else if( sum==left ){
sum = ;
day = ;
}
else {
day += sum;
sum = ;
}
}
else if( judge_month( mon )==true ){
int left = -day;
if( sum>left ){
sum = sum-left-;
mon++;
if( mon> ) {
year++;
mon = ;
}
day = ;
}
else if( sum==left ){
sum = ;
day = ;
}
else{
day += sum;
sum = ;
}
}
else {
int left = -day;
if( sum>left ){
sum = sum-left-;
mon++;
if( mon> ) {
year++;
mon = ;
}
day = ;
}
else if( sum==left ){
sum = ;
day = ;
}
else{
day += sum;
sum = ;
}
} }//闰年
else{ if( mon== ){
int left = -day;
if( sum>left ){
sum = sum-left-;
mon++;
day = ;
}
else if( sum==left ){
sum = ;
day = ;
}
else {
day += sum;
sum = ;
}
}
else if( judge_month( mon )==true ){
int left = -day;
if( sum>left ){
sum = sum-left-;
mon++;
if( mon> ) {
year++;
mon = ;
}
day = ;
}
else if( sum==left ){
sum = ;
day = ;
}
else{
day += sum;
sum = ;
}
}
else {
int left = -day;
if( sum>left ){
sum = sum-left-;
mon++;
if( mon> ) {
mon = ;
year++;
}
day = ;
}
else if( sum==left ){
sum = ;
day = ;
}
else{
day += sum;
sum = ;
}
} }//不是闰年
if( sum<= )
break;
}//向后D天的日期 printf("%04d/%02d/%02d ",year,mon,day);
year = ;
mon = ;
day = ;
sum = n;
while( sum> ){
if( judge_year( year )==true ){
if( sum>= ){
sum-=;
year--;
}
else{
if( mon== ){
int left = day;
if( sum>= ){
sum-=;
mon--;
}
else {
if( sum==left- ){
sum = ;
day = ;
}
else if( sum<left- ){
day -= sum;
sum = ;
}
else {
sum -= left;
day = ;
mon--;
}
}
}
else if( mon==||mon==||mon==||mon== ){
int left = day;
if( sum>= ){
sum-=;
mon--;
}
else {
if( sum==left- ){
sum = ;
day = ;
}
else if( sum<left- ){
day -= sum;
sum = ;
}
else {
sum -= left;
day = ;
mon--;
}
}
}
else {
int left = day;
if( sum>= ){
sum-=;
mon--;
if( mon<= ){
year--;
mon=;
}
}
else {
if( sum==left- ){
sum = ;
day = ;
}
else if( sum<left- ){
day -= sum;
sum = ;
}
else {
sum -= left;
day = ;
mon--;
if( mon== ){
mon = ;
year--;
}
}
}
}
}
}//闰年
else {
if( sum>= ){
sum-=;
year--;
}
else{
if( mon== ){
int left = day;
if( sum>= ){
sum-=;
mon--;
}
else {
if( sum==left- ){
sum = ;
day = ;
}
else if( sum<left- ){
day -= sum;
sum = ;
}
else {
sum -= left;
day = ;
mon--;
}
}
}
else if( mon==||mon==||mon==||mon== ){
int left = day;
if( sum>= ){
sum-=;
mon--;
}
else {
if( sum==left- ){
sum = ;
day = ;
}
else if( sum<left- ){
day -= sum;
sum = ;
}
else {
sum -= left;
day = ;
mon--;
}
}
}
else {
int left = day;
if( sum>= ){
sum-=;
mon--;
if( mon== ){
year--;
mon=;
}
}
else {
if( sum==left- ){
sum = ;
day = ;
}
else if( sum<left- ){
day -= sum;
sum = ;
}
else {
sum -= left;
day = ;
mon--;
if( mon== ){
mon = ;
year--;
}
}
}
}
}
}//不是闰年
if( sum<= ) break;
} printf("%04d/%02d/%02d\n",year,mon,day);
}
return ;
}

HDU4515+计算日期的更多相关文章

  1. 计算日期时间 自动加1天 PHP计算闰年 java与PHP时间戳对比区别

    昨天写一个同步数据库的模块  从一个数据库同步到另外一个数据库,因为数据较多,不可能一次性全部搬迁过去,所以就按照每天搬迁! 写了一个 模块,点击加1,只要点击一次,自动从A数据库取出1天的数据, 并 ...

  2. js计算日期相差的天数

    在网站开发中,经常会遇到计算日期相差的天数,js 没有提供相应的方法,所以自己写一个,方便将来查看: 代码: function DateDiff(sDate1, sDate2, splitStr) { ...

  3. Java8中计算日期时间差

    一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.ChronoUnit 二.Period类 主要是Period类方法getYears(),g ...

  4. sqlserver计算日期

    在网上找到的一篇文章,相当不错哦O(∩_∩)O~ 这是计算一个月第一天的SQL 脚本:  SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --当月的第一 ...

  5. MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type)

    MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type) DATE_SUB(d,INTERVAL expr type)函数返回起始日期d减去一个时间段后的日期. expr是 ...

  6. PostgreSQL 当月最后一天的工作日 , 计算日期是星期几

    可以用pg自带函数select extract(dow from current_date),之所以没用主要是展示一下通过数学方法计算日期的原理. drop function if exists ge ...

  7. Java程序设计——反转字符串 & 找朋友 & 计算int型二进制1的个数 & 情报加密 & 计算日期 & 求近似数 & 输出较小数(练习1)

    作为刚刚入门Java的选手,其实C++的功底起到了很大的作用.但是,Java之于C++最大的不同,我个人认为,是其类的多样性.才入门的我,写着老师布置的简单的面对过程的题,如果是C++,可以算是简单了 ...

  8. 按年、季度、月分组&&计算日期和时间的函数

    Mysql 按年.季度.月分组 按月度分组: select DATE_FORMAT(i.created_at, '%Y-%m月')...................GROUP BY DATE_FO ...

  9. JavaScript计算日期间隔以及结果错误(少一天)的解决方法

    下面的代码是之前从网上某个地方COPY下来的,之前一直用着,前段时间DateDiff()方法突然出问题了,输入两个日期2015-10-01 和 2015-10-02之后,计算出来的日期是0!如果只有几 ...

随机推荐

  1. 使用PSSH批量SSH操作Linux服务器

    http://www.opstool.com/article/266 服务器多了,有一个烦恼就是如何批量快速操作一堆服务器.这里我推荐一下经常使用利器pssh.这个工具给我的工作带来了莫大的帮助. 简 ...

  2. SpringMVC注册拦截器

    方法1: 拦截所有URL <mvc:interceptors> <bean class="cn.ciss.interceptor.LoginInterceptor" ...

  3. ASP判断文件地址是否有效

    <% Response.Write("<head><style><!--span{ font-size: 9pt }--></style> ...

  4. Access数据库在线压缩的实现方法

    如果在 Access 数据库中删除数据或对象,或者在 Access 项目中删除对象,Access 数据库或 Access 项目可能会产生碎片并会降低磁盘空间的使用效率.压缩 Access 数据库或Ac ...

  5. Java简单算法--求100以内素数

    package cn.magicdu.algorithm; /** * 打印素数 * * @author xiaoduc * */ public class Prim { public static ...

  6. Jsp与servlet之间页面跳转及参数传递实例(转)

    原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...

  7. 启用Win8(中文版/核心版)中被阉割的远程桌面服务端

    Windows 8/8.1 标准版(中文版/核心版)中取消了远程桌面服务端,想通过远程连接到自己的电脑就很麻烦了,第三方远程桌面速度又不理想(如TeamViewer).通过以下方法可让系统恢复远程桌面 ...

  8. Golden32 别名时中文 报ORA-00911: invalid character错误

    查询数据库软件我一般用两个:PL SQL和golden32:使用golden32-之前使用的时候别名为中文是没有任何问题:直到我想将PL SQL汉化(使用中文包chinese.exe),汉化完后再次查 ...

  9. 关于ios的手势识别(GestureRecognizers)讲解

    大家都知道,苹果的设备,不管是mac机器还是iPhone或iad,都支持多点触控,进而延伸了多种手势识别的功能.这为用户带来了很大的便携性和多样灵活性,极大的方便了用户的使用.足以见手势识别(Gest ...

  10. ubuntu lua安装

    #解压 tar -xzvf lua5.2.2.tar.gz #进入lua5.2.2文件夹 cd lua5.2.2 #执行make sudo make linux #提示如下错误: #lua.c:67: ...