题目链接
题意是求每个人18岁生日所经历的天数,一开始没明白如果这个人没有18岁生日,就输出-1,是什么意思,以为是要考虑现在的日子,看他到没到十八。
但后来查了一下了解到意思是如果她的生日是闰年的二月29,则十八年必定过不了生日;
可以利用求余的加法推导,确实是如此==>(a+b)%c=(a%c+b%c)%c
我的做法是利用一个三维数组,假设一个年份,对这个之前的进行预处理,存下到0.1.1到日期差,再用十八年后的减这个数即可;
代码如下:

// ConsoleApplication20.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#pragma warning(disable:4996);
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
#define isyeap(x) x%4==0&&x%100!=0||x%400==0?1:0
int dayofmonth[13][2] = {0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31 };
struct date {int day;int month;int year;void nextday(){day++;if (day > dayofmonth[month][isyeap(year)]) {day = 1;month++;if (month > 12) {month = 1;year++;}}}
};
int buf[5001][13][32];int main()
{date tmp;int cnt = 0;tmp.day = 1;tmp.month = 1;tmp.year = 0;while (tmp.year != 5001){buf[tmp.year][tmp.month][tmp.day] = cnt;tmp.nextday();cnt++;}int t;scanf("%d", &t);while (t--){int dyear, dmonth, dday;scanf("%d-%d-%d", &dyear, &dmonth, &dday);if (dmonth == 2 && dday == 29) printf("-1\n");else {printf("%d\n", buf[dyear + 18][dmonth][dday] - buf[dyear][dmonth][dday]);}}return 0;
}

hdu oj 1201:18岁生日相关推荐

  1. HDU - 1201 - 18岁生日 - [局部分离思想]

    HDU - 1201 - 18岁生日 https://vjudge.net/problem/HD... 一句话题意:给定出生日期(格式为1988-03-07),求到18岁生日为止经历了多少天:没有18 ...

  2. 航电oj:18岁生日

    ** 航电oj:18岁生日 ** #题目描述 #理解题目 看出生和18岁这两年 其他年 润年366 平年 365 #出生年闰年且生日在2月前 这年有366 18岁这年(出生年是闰年前一年)生日在3月或 ...

  3. 1201 18岁生日

    18岁生日 Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全 ...

  4. HDOJ 1201 18岁生日

    题目链接 纯水题关键是得处理好闰年.闰月问题. AC代码: #include <iostream> using namespace std;int d1[12] = { 31, 28, 3 ...

  5. 18岁生日 HDU - 1201

    Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从 ...

  6. 18岁生日 HDU 1201

    18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  7. HDU——18岁生日

    Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所 ...

  8. E - 18岁生日(20)

    添加链接描述 E - 18岁生日(20) HDU - 1201 Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢 ...

  9. HDU1201 18岁生日【日期计算】

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

最新文章

  1. Forefront_TMG_2010-TMG发布Web服务器
  2. SQL Server 2012 安装杂谈
  3. IntelliJ IDEA 2020.1 EAP2 发布:新增禅模式和 LightEdit 模式
  4. python编程能力等级测试_56岁的潘石屹参加全国青少年编程能力等级测试,你还在问编程是什么?...
  5. Java并发编程--ReentrantReadWriteLock
  6. Unix目录结构的来历
  7. VTK修炼之道6_仔细分析一个复杂程序
  8. VC++动态链接库编程之MFC DLL
  9. Web开发的历史发展技术演变
  10. Centos 配置多个虚拟IP
  11. 康德的道德观与哲学观
  12. 95.Extjs 表单中自定义的验证规则 VTypes
  13. 解读《关于促进大数据发展的行动纲要》
  14. 加性噪声和乘性噪声、均值滤波器、方框滤波器、中值滤波器、高斯滤波器、双边滤波器
  15. helm 简介与入门
  16. java hotspot tm_Java HotSpot(TM) 64-Bit Server VM warning
  17. YDOOK:STM32: CH340G 芯片介绍 USB 转串口芯片
  18. 【保姆级】阿里云服务器frp内网穿透教程
  19. 多图带您领略Windows 10 Server虚拟化平台风采
  20. Echart在Openlayers的应用-航班的炫光特效

热门文章

  1. PixiJS 6.2.0 图层层级 zindex
  2. (数据结构)树和二叉树相关知识点
  3. 骨传导蓝牙耳机品牌推荐、性价比最高的骨传导耳机清单
  4. 骑马与砍杀2地图编辑的问题
  5. 深富策略:3600点未能成功站上短线
  6. 盈建科IPO注册获准:研发投入占比低,曾遭前东家索赔数千万
  7. Vulnhub靶机:DC-3渗透详细过程
  8. SMTPSendFailedException: 501 ÇëµÇ¼exmail.qq.comÐÞ¸ÄÃÜÂë
  9. 【弄nèng - Activiti6】Activiti6入门篇(七)—— 多实例任务
  10. 最小生成树———prim算法和kruskal算法详解