hdu oj 1201:18岁生日
题目链接
题意是求每个人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岁生日相关推荐
- HDU - 1201 - 18岁生日 - [局部分离思想]
HDU - 1201 - 18岁生日 https://vjudge.net/problem/HD... 一句话题意:给定出生日期(格式为1988-03-07),求到18岁生日为止经历了多少天:没有18 ...
- 航电oj:18岁生日
** 航电oj:18岁生日 ** #题目描述 #理解题目 看出生和18岁这两年 其他年 润年366 平年 365 #出生年闰年且生日在2月前 这年有366 18岁这年(出生年是闰年前一年)生日在3月或 ...
- 1201 18岁生日
18岁生日 Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全 ...
- HDOJ 1201 18岁生日
题目链接 纯水题关键是得处理好闰年.闰月问题. AC代码: #include <iostream> using namespace std;int d1[12] = { 31, 28, 3 ...
- 18岁生日 HDU - 1201
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从 ...
- 18岁生日 HDU 1201
18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- HDU——18岁生日
Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所 ...
- E - 18岁生日(20)
添加链接描述 E - 18岁生日(20) HDU - 1201 Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢 ...
- HDU1201 18岁生日【日期计算】
18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
最新文章
- Forefront_TMG_2010-TMG发布Web服务器
- SQL Server 2012 安装杂谈
- IntelliJ IDEA 2020.1 EAP2 发布:新增禅模式和 LightEdit 模式
- python编程能力等级测试_56岁的潘石屹参加全国青少年编程能力等级测试,你还在问编程是什么?...
- Java并发编程--ReentrantReadWriteLock
- Unix目录结构的来历
- VTK修炼之道6_仔细分析一个复杂程序
- VC++动态链接库编程之MFC DLL
- Web开发的历史发展技术演变
- Centos 配置多个虚拟IP
- 康德的道德观与哲学观
- 95.Extjs 表单中自定义的验证规则 VTypes
- 解读《关于促进大数据发展的行动纲要》
- 加性噪声和乘性噪声、均值滤波器、方框滤波器、中值滤波器、高斯滤波器、双边滤波器
- helm 简介与入门
- java hotspot tm_Java HotSpot(TM) 64-Bit Server VM warning
- YDOOK:STM32: CH340G 芯片介绍 USB 转串口芯片
- 【保姆级】阿里云服务器frp内网穿透教程
- 多图带您领略Windows 10 Server虚拟化平台风采
- Echart在Openlayers的应用-航班的炫光特效
热门文章
- PixiJS 6.2.0 图层层级 zindex
- (数据结构)树和二叉树相关知识点
- 骨传导蓝牙耳机品牌推荐、性价比最高的骨传导耳机清单
- 骑马与砍杀2地图编辑的问题
- 深富策略:3600点未能成功站上短线
- 盈建科IPO注册获准:研发投入占比低,曾遭前东家索赔数千万
- Vulnhub靶机:DC-3渗透详细过程
- SMTPSendFailedException: 501 ÇëµÇ¼exmail.qq.comÐÞ¸ÄÃÜÂë
- 【弄nèng - Activiti6】Activiti6入门篇(七)—— 多实例任务
- 最小生成树———prim算法和kruskal算法详解