ZOJ 3785 What day is that day?(今天是星期几?)
|
Description |
题目描述 |
|
It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? |
今天是星期六,11 + 22 + 33 + ... + NN 天后是星期几? |
|
Input |
输入 |
|
There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case: There is only one line containing one integer N (1 <= N <= 1000000000). |
多组测试样例。 输入的首行是一个整数T表示测试样例的数量。每个测试样例包含: 只有一行,且每行只有一个整数N (1 <= N <= 1000000000)。 |
|
Output |
输出 |
|
For each test case, output one string indicating the day of week. |
每个测试样例输出一个字符串表示星期几。 |
|
Sample Input - 输入样例 |
Sample Output - 输出样例 |
|
2 1 2 |
Sunday Thursday |
|
Hint |
提示 |
|
A week consists of Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday. |
一周中包含Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday。 |
【题解】
想算出最后是星期几,只要把天数模7就能得到增长了的星期数,从而换算出具体星期。
因此我们需要计算的式子可表示为:
(11+ 22+ 33+...+ NN)%7
11%7+ 22%7+ 33%7+...+ NN%7
然后对于大等于7的数,aN%7可以得到:
7N%7 = (7%7)N%7 = 0N,8N%7 = (8%7)N%7 = 1N,…………以此类推
后继的元素全部遵循这个规律,因此所求a的值为[ 0, 6]。
对于aN%7,a属于[ 0, 6]:
|
元素\次方%7 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
|
0 |
0%7已经为0,其结果全部为0 |
||||||
|
1 |
1 |
1……出现循环 |
|||||
|
2 |
1 |
2 |
4 |
1……出现循环 |
|||
|
3 |
1 |
3 |
2 |
6 |
4 |
5 |
1……出现循环 |
|
4 |
1 |
4 |
2 |
1……出现循环 |
|||
|
5 |
1 |
5 |
4 |
6 |
2 |
3 |
1……出现循环 |
|
6 |
1 |
6 |
1……出现循环 |
||||
所求式子可展开为:
|
第一层 |
11 |
22 |
33 |
44 |
55 |
66 |
07 |
|
第二层 |
18 |
29 |
310 |
411 |
512 |
613 |
014 |
|
第三层 |
115 |
216 |
317 |
418 |
519 |
620 |
021 |
|
第四层 |
122 |
223 |
324 |
425 |
526 |
627 |
028 |
|
第五层 |
129 |
230 |
331 |
432 |
533 |
634 |
035 |
|
第六层 |
136 |
237 |
338 |
439 |
540 |
641 |
042 |
|
第七层 |
…………………………………………………… |
||||||
然后把每层加起来再%7,可以得到长度为6*7 = 42的循环节。
然后根据每层的循环节套上每个元素的循环节,得到最终循环节,长度为42*7 = 294
附:原本想比较科学地证明最终循环节的长度是294,最后发现坑越挖越大,然后以现在的渣水平填不上,就弃了……
【代码 C++】
#include<cstdio>
int day[] = {
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , ,
};
char opt[][] = {
"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
};
int main(){
int t, a;
scanf("%d", &t);
while (t--){
scanf("%d", &a);
puts(opt[day[a % ]]);
}
return ;
}
ZOJ 3785
ZOJ 3785 What day is that day?(今天是星期几?)的更多相关文章
- zoj 3785 What day is that day? (打表找规律)
题目 思路:比赛的时候有想过找循环节,但是,打表打错了. 后来,看着过了挺多人,就急了, 看了一下别人的时间 耗时都挺长的,就以为不是找规律, 没想到真是找规律,不过,这个题的数据可能挺大的. AC代 ...
- zoj 3785 What day is that day?
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5272 打表找规律. #include <cstdio> #incl ...
- ZOJ 3785 What day is that day?(数论:费马小定理)
What day is that day? Time Limit: 2 Seconds Memory Limit: 65536 KB It's Saturday today, what da ...
- ZOJ 3785:What day is that day?(数论)
What day is that day? Time Limit: 2 Seconds Memory Limit: 65536 KB It's Saturday today, what day is ...
- 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...
- 【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
转自:http://www.cnblogs.com/kevince/p/3887827.html 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这么一说大家心里肯定有数了吧,“不就是nex ...
- 2014 Super Training #4 G What day is that day? --两种方法
原题: ZOJ 3785 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785 题意:当天是星期六,问经过1^1+2^2+ ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
随机推荐
- 文字处理控件TX Text Control X10独家揭秘(一):数据源自动处理
TX Text Control即将发布的X10版本,将升级重点还是放到了其比较优势的流式布局报表设计和生成上.慧都获得了来自其开发商Text Control GmbH公司的一手资料,迫不及待的为大家带 ...
- lz: linux ls 变种 只显示大小和名称(包括目录)
本次输入法使用: 手心输入法 for Mac 1.0版 测试环境为:Ubuntu 14.14.2 LTS updates 测试时间为:2015年5月28日,感觉死亡将至的夜晚,独自一人坐在一个角落,戴 ...
- Linux workqueue工作原理 【转】
转自:http://blog.chinaunix.net/uid-21977330-id-3754719.html 转自:http://bgutech.blog.163.com/blog/static ...
- flex mx组件和s组件的字体兼容性不一致
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- JDK结构介绍
dt.jar和tools.jar位于:{Java_Home}/lib/下, 而rt.jar位于:{Java_Home}/jre/lib/下, 其中: (1) rt.jar是JAVA基础类库,也就是你在 ...
- 《深度探索C++对象模型》3
第六章:执行期语意学 全局对象的初始化: 局部静态对象的初始化: 构建对象数组的vec_new()函数: 针对数组的new操作: placement operator new: 反聚合提高效率: 模板 ...
- SQL Server 索引和表体系结构(三)
转自:http://www.cnblogs.com/chenmh/p/3785285.html 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引 ...
- python-day6 常见算法 python内置模块
1.冒泡排序 需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序 原理:相邻两个值进行比较,将较大的值放在右侧,依次比较! li=[39,11,43,88,765,9]for ...
- JAVA基础知识之练习题——集合
练习一: 创建一个Set集合,保存用户输入的数据 具体代码实现如下面代码中的testSet()方法. 知识点: Set集合的基本特征是元素不允许重复.HashSet不保存元素顺序,LinkedHash ...
- 从客户端中检测到有潜在危险的Request.Form 值
今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...