HDU 6112 今夕何夕 (预处理 枚举)
2024-09-01 16:43:19
中文题意都看的懂啦~
思路很简单,就是通过前一天推出当天是星期几,直接枚举所有2017-9999年的每一天就好了。ㄟ( ▔, ▔ )ㄏ
代码:
#include <cstdio>
#define deal(a) a==7?1:(a+1)
int date[][][];
int month[][]={
{,,,,,,,,,,,,},//平年
{,,,,,,,,,,,,}//闰年
};
int Is_ryear(int x){
if(x%==) return ;
if(x%== && x%!=) return ;
return ;
}
void init(){
date[][][]=;
for (int i = ; i <= ; ++i) {
int f=Is_ryear(i);
for (int j = ; j <= ; ++j) {
for (int k = ; k <= month[f][j]; ++k) {
if(j== && k==){//新年第一天
date[i][j][k]=deal(date[i-][][]);//宏定义,即判断该天的前一天是否为星期天,是的话该天为星期一,否则加一
}else if(k==){//除了1月以外的 每个月的第一天
date[i][j][k]=deal(date[i][j-][month[f][j-]]);
}else{
date[i][j][k]=deal(date[i][j][k-]);
}
}
}
}
}
int main(){
int t,y,m,d;
char str[];
init();
scanf("%d",&t);
while(t--){
int week;
scanf("%s",str);
y=(str[]-'')*+(str[]-'')*+(str[]-'')*+(str[]-'');
m=(str[]-'')*+(str[]-'');
d=(str[]-'')*+(str[]-'');
week=date[y][m][d];
for (int i = y+; i <= ; ++i) {
int f=Is_ryear(i);
if(month[f][m]<d) continue;//由于平闰年2月的天数不一样,判断一下比较保险
if(date[i][m][d]==week){
printf("%d\n",i);
break;
}
}
}
return ;
}
最新文章
- UIPageControl页控制器
- zw版【转发&#183;台湾nvp系列Delphi例程】HALCON OverpaintRegion2
- VC++2010下编译STLport,Boost
- jdbc - 连接数据库的url
- windows7 jdk 环境变量添加
- iOS之极光推送
- ExtJS4 动态生成grid出口excel(纯粹的接待)
- 修改GDAL库支持IRSP6数据
- PHP——laravel之DB类->;查询
- [原创]标记下Kendo使用中的问题, 持续更新中ing.....
- Kettle系列: kettle标准化trans模板
- [EXP]ThinkPHP 5.0.23/5.1.31 - Remote Code Execution
- #个人博客作业week3——微软必应词典的使用
- dubbo provider如何对invoker进行export
- web.xml 组件加载顺序
- 使用 CLI 创建 Azure VM 的自定义映像
- Linux 基础教程 34-软件包管理-RPM
- 数据库连接池及并发库Theron
- 亚马逊CEO贝索斯致股东信:阐述公司未来计划
- Siki_Unity_2-1_API常用方法和类详细讲解(下)
热门文章
- 47 (OC)* OC反射机制
- Spring事务传播行为中可能的坑点
- linux使用命令上传下载文件 -- lrzsz
- python + selenium 环境搭建及问题
- Spring Data JPA 梳理 - JPA与“Spring、Spring Data JPA”的关系
- 2.html5新布局元素
- Linux系统学习之Ln(软连接和硬链接)
- mysql操作遇到的坑(第一版)
- iOS 组件化路由框架 WisdomRouterKit 的应用
- 【柠檬班】jmeter 不写代码,秒秒钟提取动态列表最后一个值