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 ...
随机推荐
- HTTP错误汇总(404、302、200……)
HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 ...
- 160914、ionic指令简单布局
1) 添加引用类库(ionic样式和ionic js文件) 2) 标题栏,页脚栏,内容区 3) Js引入ionic类库,添加页面操作方法和对象 4) 数据初始化 5) Html页面绑定方法和对象 &l ...
- UTF8转码, 考虑利用app转好再传, CC2541转太麻烦了...
- oracle 自定义 聚合函数
Oracle自定义聚合函数实现字符串连接的聚合 create or replace type string_sum_obj as object ( --聚合函数的实质就是一个对象 sum ...
- Temporary Tables and the TableType Property [AX 2012]
Temporary Tables and the TableType Property [AX 2012] 1 out of 1 rated this helpful - Rate this topi ...
- ACM题目————Anagram
Description You are to write a program that has to generate all possible words from a given set of l ...
- S3c6410 平台 Android系统的Wi-Fi调试记录
硬件平台:S3c6410 操作系统:Android 网卡芯片:GH381(SDIO接口 sdio8688) 1.SDIO驱动 因为是SDIO接口,所以请先保证mmc驱动(代码在“kernel\driv ...
- 在IE6下使用filter设置png背景
今天帮别人解决问题学会了一个在IE6下使用filter设置png背景,具体css写法如下: .login_form_wrap { width: 778px; height: 360px; backgr ...
- JAVA基础知识之JVM-——类加载器
类加载器负责将.class文件加载到内存,并为其创建java.lang.Class对象,这个对象就代表这个类. 在Java中,通过包名+类名来唯一标识一个类,而在JVM中,要用 类加载器实例+包名+类 ...
- Java 使用 Stream API 筛选 List
前言 上课的时候看到老师用迭代器来遍历 List 中的元素的时候,我的内心是极其嫌弃的,这种迭代方法不能直接访问当前的元素,而且写起来也麻烦.于是上网查了查 Java 有没有类似于 Linq 的东西, ...