题目链接:http://icpc.moe/onlinejudge/showProblem.do?problemId=5711

此题是浙江省第13届省赛的D题,比赛的时候小编一开始开的就是这个题,因为自己也有算天数差的模板,想也没想直接粘过来用,不管是怎么算都是TLE,后来才发现10^9的数据使肯定要爆的,必须得着周期才能算出来,在天数月份年数平闰年和星期数总体的周期是400(可能有人要问小编为什么加上星期数的周期还是400呢?平闰年的总体周期为400不难理解,但是如果你去计算你会发现每过400年的天数刚刚好也是7的倍数,这个当时在比赛的时候小编也专门开了一个草稿件去计算过,不懂得同学也可以直接去试试),因为我们的时间最小只能达到1753,所以我们先预处理1753的后门400年的情况,这样我们就可以再对应到我们算的那个时间,就可以处理出这个时间。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
struct point
{int year, month, day;int cnt;point (int year = 0, int month = 0, int day = 0, int cnt = 0): year(year), month(month), day(day), cnt(cnt){}
};
point a[10000];
int n;
int cnt;
int d1[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int d2[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool check(int x)
{if (x % 400 == 0 || (x % 4 == 0 && x % 100 != 0)) return true;return false;
}
void init()
{cnt = 1;int day = 1;for (int i = 1753; i <= 1753 + 399; i++){bool flag = false;flag = check(i);for (int j = 1; j <= 12; j++){int tmp = (flag == 1 ? d2[j] : d1[j]);while (day <= tmp){if (day == 1 || day == 11 || day == 21){a[cnt] = point(i, j, day, cnt);cnt++;}day += 7;}day -= tmp;}}
}
int main()
{init();cnt--;int t;scanf("%d", &t);while (t--){int y, m, d;scanf("%d%d%d", &y, &m ,&d);int n;scanf("%d", &n);n--;int ind = n / cnt;int tmp = n - ind * cnt;int mid = 0;while (y >= 1753 + 400){y -= 400;mid++;}//printf("y = %d mid = %d tmp = %d\n", y, mid, tmp);ll t1 = 0, t2 = 0, t3 = 0;for (int i = 1; i <= cnt; i++){if (y == a[i].year && m == a[i].month && d == a[i].day){int g = i;g += tmp;while (g > cnt){g -= cnt;mid++;}t1 = (ll)a[g].year + (ll)(mid + ind) * 400;t2 = (ll)a[g].month;t3 = (ll)a[g].day;break;}}printf("%lld %lld %lld\n", t1, t2, t3);}return 0;
}

ZOJ 3939 The Lucky Week相关推荐

  1. ZOJ - 3939 The Lucky Week【简单方法】

    题目 传送门 Sample Input 2 2016 4 11 2 2016 1 11 10 Sample Output 2016 7 11 2017 9 11 题意:t组数据,给出四个数,x,y,z ...

  2. 【打表找循环节】ZOJ - 3939 The Lucky Week

    Step1 Problem: 幸运日指,星期一是1 or 11 or 21号.给出第一个幸运日时间,问第n个幸运日的时间. 例如: 2016 4 11 2 输出: 2016 7 11 数据范围: 时间 ...

  3. ZOJ 3939 The Lucky Week (打表预处理/找规律)

    题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115189#problem/C 代码: #include <cstdio> ...

  4. The 13th Zhejiang Provincial Collegiate Contest(2016年浙江省赛)

      前4道水题就不说了,其中我做了C题,1Y,小心仔细写代码并且提交之前得确认无误后提交才能减少出错率. 结果后面2题都由波神做掉,学长带我们飞~ 终榜 官方题解   ZOJ 3946 Highway ...

  5. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  6. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  7. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  8. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

  9. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  10. hihocoder 1152 Lucky Substrings

    #1152 : Lucky Substrings 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if t ...

最新文章

  1. 如何以及为什么使用Android Visibility Listeners
  2. 启动万维网发布服务(W3SVC)
  3. 嵌入式Linux启动过程中的问题积累
  4. shell发送邮件函数
  5. 【AI视野·今日CV 计算机视觉论文速览 第204期】Mon, 24 May 2021
  6. Vivado生成bit文件布局失败解决
  7. git ignore 某行
  8. 数据分析没有思路怎么办
  9. 《代码整洁之道:程序员的职业素养》一一1.1 清楚你要什么
  10. c51串行通信汇编语言,51单片机双机串行通信汇编语言程序+Proteus仿真
  11. QR 二维码纠错码(三)
  12. 层次分析法(AHP法)
  13. 【易康eCognition】面向对象的图像分类学习
  14. jcepolicy7.zip linux,HDP安全之集成kerberos/LDAP、ranger(knox自带LDAP)
  15. 制造业工厂需要关注的工业物联网解决方案
  16. iOS -- 使用蒲公英进行内测
  17. CSDN博客写作编辑器如何使用?
  18. 电子发票多页合并打印在一张纸上
  19. c语言编程第四版李丽娟课程,C语言程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 李丽娟 C语言程序设计教程(第4版)_第4章_分支结构.pdf...
  20. hrbust 2343 巴啦啦能量

热门文章

  1. 波浪数,51nod1788,根号分治+Meet in the Middle
  2. kdd99数据集svm分类_使用svm和不平衡的twitter数据集进行三级情感分类的任务
  3. 面试题,你为什么想做产品经理?
  4. 软件资格证考试——初级程序员
  5. oracle数据库变为只读状态,oracle只读模式
  6. XCOM2.0接收数据为0
  7. 关闭Chrome启动时的360导航页面
  8. JAVA初学习(三)(数组和面向对象)
  9. simplest_ffmpeg_decoder_pure.c
  10. python爬取文献资料_Python 批量爬取Web of Science 文献信息数据