中文题意都看的懂啦~

思路很简单,就是通过前一天推出当天是星期几,直接枚举所有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 ;
}

最新文章

  1. UIPageControl页控制器
  2. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON OverpaintRegion2
  3. VC++2010下编译STLport,Boost
  4. jdbc - 连接数据库的url
  5. windows7 jdk 环境变量添加
  6. iOS之极光推送
  7. ExtJS4 动态生成grid出口excel(纯粹的接待)
  8. 修改GDAL库支持IRSP6数据
  9. PHP——laravel之DB类-&gt;查询
  10. [原创]标记下Kendo使用中的问题, 持续更新中ing.....
  11. Kettle系列: kettle标准化trans模板
  12. [EXP]ThinkPHP 5.0.23/5.1.31 - Remote Code Execution
  13. #个人博客作业week3——微软必应词典的使用
  14. dubbo provider如何对invoker进行export
  15. web.xml 组件加载顺序
  16. 使用 CLI 创建 Azure VM 的自定义映像
  17. Linux 基础教程 34-软件包管理-RPM
  18. 数据库连接池及并发库Theron
  19. 亚马逊CEO贝索斯致股东信:阐述公司未来计划
  20. Siki_Unity_2-1_API常用方法和类详细讲解(下)

热门文章

  1. 47 (OC)* OC反射机制
  2. Spring事务传播行为中可能的坑点
  3. linux使用命令上传下载文件 -- lrzsz
  4. python + selenium 环境搭建及问题
  5. Spring Data JPA 梳理 - JPA与“Spring、Spring Data JPA”的关系
  6. 2.html5新布局元素
  7. Linux系统学习之Ln(软连接和硬链接)
  8. mysql操作遇到的坑(第一版)
  9. iOS 组件化路由框架 WisdomRouterKit 的应用
  10. 【柠檬班】jmeter 不写代码,秒秒钟提取动态列表最后一个值