题目链接:

D - The Lucky Week

 ZOJ - 3939 

题目大意:幸运的星期指,星期一为每个月的1 or 11 or 21号。给出第一个幸运星期的时间,问从当前的日起开始。第n个的日期。

具体思路:我们通过打表可以发现,每隔400年,当前的这一天的星期和400年后的是相同的。所以我们先求出一个400年有多少个幸运的天数(1600-1999),然后判断当前的年份如果以1600年开始的话,往后n个幸运日是多少,然后再做差以原来的起点输出就可以了。

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 # define ll long long
 4 # define inf 0x3f3f3f3f
 5 const int maxn = 2e6+100;
 6 struct node
 7 {
 8     ll  y,m,d;
 9     node() {}
10     node(ll xx,ll yy,ll zz)
11     {
12         y=xx;
13         m=yy;
14         d=zz;
15     }
16 } ;
17 //bool check(ll y,ll m,ll d)
18 //{
19 //    ll a;
20 //    if(m==1||m==2)
21 //    {
22 //        m+=12;
23 //        y--;
24 //    }
25 //    if((y<1752)||(y==1752&&m<9)||(y==1752&&m==9&&d<3))
26 //        a=(d+2*m+3*(m+1)/5+y+y/4+5)%7;
27 //    else
28 //        a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
29 //    if(a==0)
30 //        return true;
31 //    return false;
32 //}
33 bool check(int year,int month,int day)
34 {
35     if(month < 3) { year -= 1;  month += 12; }
36     int c = int (year / 100), y = year - 100 * c;
37     int w = int ( c / 4) - 2 * c + y + int ( y / 4 ) +(26 * ( month + 1 ) / 10) + day - 1;
38     w = (w % 7 + 7) % 7;
39
40     if (w == 1) return 1;
41     else return 0;
42 }
43 vector<node>q;
44 map<ll,ll>vis;
45 void init(){
46 for(ll i=1600;i<=1600+400-1;i++){
47 for(ll j=1;j<=12;j++){
48 if(check(i,j,1)){
49 q.push_back(node(i,j,1));
50 vis[i*1000+j*100+1]=q.size()-1;
51 }
52 if(check(i,j,11)){
53 q.push_back(node(i,j,11));
54 vis[i*1000+j*100+11]=q.size()-1;
55 }
56 if(check(i,j,21)){
57 q.push_back(node(i,j,21));
58 vis[i*1000+j*100+21]=q.size()-1;
59 }
60 }
61 }
62 }
63 int main()
64 {
65     init();
66     int T;
67     scanf("%lld",&T);
68     while(T--)
69     {
70        ll y,m,d,n;
71         scanf("%lld %lld %lld %lld",&y,&m,&d,&n);
72         ll tmp1,tmp2;
73         tmp1=(y-1600)%400+1600;
74         tmp2=tmp1*1000+m*100+d;
75         int pos=vis[tmp2];
76         int t1=(pos+n-1)%q.size();
77         int t2=(pos+n-1)/q.size();
78         printf("%lld %lld %lld\n",y+q[t1].y-q[pos].y+t2*400,q[t1].m,q[t1].d);
79     }
80     return 0;
81 }

 

转载于:https://www.cnblogs.com/letlifestop/p/10684937.html

D - The Lucky Week ZOJ - 3939 (思维)相关推荐

  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. Numbers ZOJ - 3987[思维暴力]

    题意:给出一个数字N以及一个M,要求把N分为M部分且满足 N=a1+a2+a3+⋯+amN = a_1 + a_2 + a_3 + \dots+a_mN=a1​+a2​+a3​+⋯+am​ 询问如何让 ...

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

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

  6. 思维+multiset ZOJ Monthly, July 2015 - H Twelves Monkeys

    题目传送门 1 /* 2 题意:n个时刻点,m次时光穿梭,告诉的起点和终点,q次询问,每次询问t时刻t之前有多少时刻点是可以通过两种不同的路径到达 3 思维:对于当前p时间,从现在到未来穿越到过去的是 ...

  7. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  8. 15行代码AC——ZOJ - 4118 Stones in the Bucket(思维题+优化方案)(第十届山东省ACM程序设计竞赛F题)

    励志用少的代码做高效表达. 思路分析 题意:给定n个数,问最少操作几次,使数列中的数全部相等. 操作一:将数列中任意数减一. 操作二:将数列中任意数减一.任意数加一(相当于把1挪过去) 涉及到最少的题 ...

  9. *【CodeForces - 122D】Lucky Transformation(字符串问题,思维剪枝,优化,有坑,需注意的问题if的层次总结)

    题干: Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decima ...

  10. ZOJ 3962:Seven Segment Display(思维)

    https://vjudge.net/problem/ZOJ-3962 题意:有16种灯,每种灯的花费是灯管数目,代表0~F(十六进制),现在从x开始跳n-1秒,每一秒需要的花费是表示当前的数的花费之 ...

最新文章

  1. smarty mysql_Smarty处理mysql查询数组
  2. 重复调用的代码块——方法
  3. 利用JavaScript的复制
  4. 程序猿崛起——Growth Hacker
  5. Linux使用vsftpd搭建FTP服务
  6. 【剑指offer】面试题40:最小的k个数(java)
  7. 日历c语言程序,一个完整的日历程序(含有农历)
  8. Spring-扫描/jar/读取Classpath下的文件资源
  9. pythonplot下载_Matplotlib for Python Developers PDF 下载
  10. 帮助睡眠最好的办法是什么?对睡眠好的东西分享
  11. Spring Boot 网易云课堂
  12. 黑白照片怎么上色?学会这招轻松解决
  13. 贪吃蛇小游戏 (一)
  14. 2020上海泛微JAVA校招面经
  15. vue-cli 组件传值:父传子props
  16. ru0506持仓:20050428
  17. [RK3399][Android7.1] 调试笔记 --- 闪电浏览器全屏播放视频时黑屏
  18. 深入浅出Redis-redis哨兵集群
  19. Android 三国杀 百度账号,三国杀移动版百度版本v3.8.4 安卓版 Android
  20. c语言吃豆人游戏怎么理解,python 实现简单的吃豆人游戏

热门文章

  1. Macbook Pro拆机清灰体验
  2. 通过数据告诉你centos和debian哪个好?
  3. 给微信小程序页面加载背景图片解决方案
  4. 【学习日记】Dom基础
  5. java 给图片加水印整理:2种方法
  6. SharePoint is Dying
  7. 【PB】数据窗口的修改属性
  8. 新猿木子李:0基础学python培训教程 python下载文件的多种方法汇总
  9. 什么是NLP,NLP主要有什么用,为什么要学自然语言处理?
  10. 云南开放大学《机械制造基础-形考作业1-6(主观题)》