ZOJ-3939 The Lucky Week

思路:读完题发现数据量好大,没法纯粹用日期增加来模拟,就想到一年内满足要求的日期个数是否有规律,所以打表,判断某个日期是星期几可以用公式来进行(感谢能带模板,不然公式死都记不住),第一次打出1753之后的2000年,暴力跑出循环长度是400,之后再打出更长的数据,发现循环长度就是400。于是开始敲代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define mod 998244353
#define eps 1e-6
double pi=acos(-1);
const ll INF=1e12;
int CaculateWeekDay(int y,int m, int d)
{//判断y-m-d是星期几,0-6,星期一-星期天 if(m==1||m==2) {m+=12;y--; } int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+7)%7;return week;
}
int CaculateYears(int y){
//打表出这一年的满足要求的日期的数量 int i,j,ans=0;for(i=1;i<13;i++){for(j=1;j<31;j+=10){if(CaculateWeekDay(y,i,j)==0){ans++;}}}return ans;
}
int CaculateThisYears(int y,int m,int d,int n){
//1.用于计算输入y-m-d开始到y这年结束有几个满足要求的数量
//2.计算并输出答案
//懒得分开写,凑合着看看就好int i,j,ans=0;for(j=d;j<31;j+=10){if(CaculateWeekDay(y,m,j)==0){ans++;if(ans==n){printf("%d %d %d\n",y,m,j);return 0;}}}for(i=m+1;i<13;i++){for(j=1;j<31;j+=10){if(CaculateWeekDay(y,i,j)==0){ans++;if(ans==n){printf("%d %d %d\n",y,i,j);return 0;}}}}return ans;
}
int main()
{int ans[400],sum[400];//打表记录int T,y,m,d,n,i,j;for(i=0;i<400;i++){ans[i]=CaculateYears(i+1753);if(i==0){sum[0]=ans[0];}else{sum[i]=sum[i-1]+ans[i];}}scanf("%d",&T);while(T--){scanf("%d%d%d%d",&y,&m,&d,&n);int ans1=CaculateThisYears(y,m,d,n);//如果返回0说明已经找到,结束if(ans1){n-=ans1;//去掉输入日期并在同一年的数量y+=n/sum[399]*400;n%=sum[399];if(n==0){//说明答案在y这年ans1=CaculateThisYears(y,1,1,ans[(y-1753)%400]);continue;}y++;//在之后年份中while(n>ans[(y-1753)%400]){//多与这一年的总数量,跑到下一年n-=ans[(y-1753)%400];y++;}ans1=CaculateThisYears(y,1,1,n);}}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. HDU2024 C语言合法标识符
  2. python中缩进规则的例外
  3. android jni ——Field Method -- Accessing Field
  4. 用代码证明自己闲的蛋疼(一)——cmd闪瞎狗眼
  5. django-分页的演示
  6. 2万 | 北京做Java开发月薪 2 万,so easy!
  7. JDBC操作(基础篇)
  8. Win32 Thread Information Block
  9. [Sdoi2013] 直径
  10. sqlserver导出表结构到excel
  11. 独孤求败-小滴云架构大课十八式
  12. WISP、Client+AP和WDS 区别
  13. python 对称加密_常见加密方式及Python实现
  14. [转]一个人生活,如何摆脱孤独提升幸福感?
  15. 基于Trie树进行拆分字符串变成拼音音节(二):字符串拼音拆分
  16. 云计算的特点与产生、云计算体系结构、新摩尔定律、云计算优势
  17. 拼音首字母缩写在线翻译源码
  18. Linux时间一直跳回原始时间,Linux时间同步
  19. DELL PC服务器PowerEdge 管理工具OMSA的使用
  20. VGG16-好莱坞明星识别

热门文章

  1. shell检查Android设备连接状态
  2. 超大背包(挑战编程之01背包)
  3. 【Java例题】3.6 计算arcsin(x)的值
  4. 什么是平台即服务 (PaaS)?定义、示例、组件和最佳实践
  5. windows10卸载程序_如何在Windows 10中卸载或修复程序
  6. The simplest way to combine two csv file in python
  7. java计算机毕业设计学生成绩管理系统源程序+mysql+系统+lw文档+远程调试
  8. Coolpad(酷派) 进入手机工厂模式
  9. java 超时状态_Java任务超时处理机制实现【原创】
  10. 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)