zoj 3785 What day is that day? (打表找规律)
思路:比赛的时候有想过找循环节,但是,打表打错了。 后来,看着过了挺多人,就急了, 看了一下别人的时间 耗时都挺长的,就以为不是找规律,
没想到真是找规律,不过,这个题的数据可能挺大的。
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[][] = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
int a[]; int main()
{
int t, i, n;
int sum, x;
sum = ;
for(n = ; n <= ; n++)
{
x = ;
for(i = ; i <= n; i++)
{
x = x*n;
x = x%;
}
sum += x;
sum = sum%;
a[n] = sum;
}
while(cin>>t)
{
while(t--)
{
cin>>n;
x = n%;
if(x==)
x = ;
cout<<s[a[x]]<<endl;
}
}
return ;
}
打表代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = ;
int a[maxn], b[maxn], f[maxn]; int main()
{
int t, i, j, n;
int sum, x, cnt, ad;
while(cin>>t)
{
while(t--)
{
//cin>>n;
sum = ;
memset(a, , sizeof(a));
memset(b, , sizeof(b));
memset(f, , sizeof(f));
for(n = ; n <= ; n++)
{
x = ;
for(i = ; i <= n; i++)
{
x = x*n;
x = x%; //因为数会非常大,所以利用公式,取余
}
sum += x;
sum = sum%; //因为数会非常大,所以利用公式,取余
a[n] = sum; //把所有结果存入a数组
}
cnt = ;
for(i = ; i <= ; i++)
{
if(a[i]==)
{
b[cnt++] = i; //把结果为1的序号 存入b
f[i] = ;
}
/*cout<<a[i];
if(i%294==0)
cout<<endl<<endl;*/
}
for(i = ; i < cnt; i++)
{
ad = b[i]-; //每一个 的间隔
for(j = ; j <= ; j++) //如果照这个间隔向后推 几次,还是符合间隔的话,就找到了循环节
{
if(f[b[i]+ad*j] != )
break;
}
if(j==)
{
cout<<b[i]<<endl;
break;
}
}
}
}
return ;
}
zoj 3785 What day is that day? (打表找规律)的更多相关文章
- 【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 ...
- ZOJ 3622 Magic Number 打表找规律
A - Magic Number Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Subm ...
- zoj 3629 Treasure Hunt IV 打表找规律
H - Treasure Hunt IV Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- ZOJ 3785 What day is that day?(今天是星期几?)
Description 题目描述 It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? 今天是星期六,11 + ...
- 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问题(2010浙江大学研究生复试上机题目[找规律] hdoj 3788)
ZOJ问题 pid=3788">点击打开链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
随机推荐
- MVC下用C#实现Excel导出
Aspx页面脚本: function exportxls() { window.open("/Common/HomeExport?startdate=" + $("#hi ...
- VS2010 配置opencv环境
大家在使用opencv的时候肯定会面对这样一个问题:根据官网以及大多数教程提供的方法中,似乎每一次新建一个opencv的新项目以后都需要重新再配置"VC++目录"中的"包 ...
- Android应用市场提交入口
应用市场是整个移动生态系统的核心,然而对于中国用户来说,Google Play应用商店却因为种种原因,在中国一直无法长期稳定的运作,又加上Android系统的开源特性,从而在中国造就出大量的第三方应用 ...
- Careercup - Facebook面试题 - 6299074475065344
2014-05-01 01:00 题目链接 原题: Given a matrix with 's. What is the maximum area of the rectangle. In . Ho ...
- 【转】解析Java finally
下文写的关于Java中的finally语句块什么时候执行的问题.什么时候执行呢?和return.continue.break.exit都有关系,尤其return语句非常有意思,于是分享给大家.谢谢Sm ...
- oracle——session
一.解释session web应用中,session是服务器段保存用户信息的一个对象,cookie是浏览器端保存用户信息的对象.今天了解了oracle也有session对象,那么什么是oracle的s ...
- HDU1251 统计难题 Trie树
题目很水,但毕竟是自己第一道的Trie,所以还是发一下吧.Trie的更多的应用慢慢学,AC自动机什么的也慢慢学.... #include<iostream> #include<cst ...
- abs(INT_MAX-(-1))
写一个程序,结果总是不对,check逻辑好几遍也没发现错误,无奈之下debug.发现一个有趣的现象abs(INT_MAX-(-1))返回值是-2147483648.于是看了下abs函数的代码实现. i ...
- SDUT1466双向队列
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1466&cid=1182 题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列 ...
- hdu 1905 小数化分数2
;}