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 ...
随机推荐
- python核心编程学习记录之数字
仅用于整数的操作
- python随机数的使用记录
一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等. 二.random模块重要函数 1 ).ra ...
- Android NDK 开发(三)--常见错误锦集合Log的使用【转】
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41826511 Android NDK开发经常因某些因素会出现一些意想不到的错误, ...
- BAT 批处理脚本 教程
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...
- 利用BAT批处理安装服务程序
@echo off @echo off set filename=LXServer.exe set servicename=Service1 set Frameworkdc=%SystemRoot%\ ...
- windows win10上传文件到linux服务器
1.最直接当然使用终端secucrt和xshell putty之类的,然后使用sz rz 2.如果服务器端不支持sz rz可以使用scp命令,下面这个pscp.exe就是支持scp的,基于ssh,很好 ...
- Mysql密码恢复
由于种种原因,Mysql root用户的密码可能被恶意篡改,这个时候就需要对Mysql进行密码恢复了.大致步骤如下: 1.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld ...
- Hadoop集群管理之配置文件
一.配置文件列表如下: [hadoop@node1 conf]$ pwd /app/hadoop/conf [hadoop@node1 conf]$ echo $HADOOP_HOME /app/ha ...
- PHP学习当中遗漏的知识点
一, 当双引号中包含变量时,变量会与双引号中的内容连接在一起: 当单引号中包含变量时,变量会被当做字符串输出. <?php $love = "I love you!"; $s ...
- awk 手册--【转载】
1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l awk 适于解决哪些问题 ? l awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...