hdu-3524 Perfect Squares---打表+找规律+循环节
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=3524
题目大意:
求i^2 mod 2^n有多少可能
解题思路:
先打表,求出n较小的时候的数据
| n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 答案 | 2 | 2 | 3 | 4 | 7 | 12 | 23 | 44 | 87 | 127 | 343 | 684 | 1367 |
发现差值分别是 0 1 1 3 5 11 21 43 85 171 341 683,
规律是后一项是前一项的两倍减一或者两倍加一,一开始发现这个规律准备从这里着手,但是还是求不出第n项
第n项就等于2+上述差值的第n-1项前缀和(因为差值是从第二项开始的)
上述差值的前缀和为 0 1 2 5 10 21 42 85 170 341 682
比如n = 3,ans[3] = 2 + 1,1就是第2项前缀和
n = 5, ans[5] = 2 + 5 = 7,5就是第3项前缀和
然后会发现前缀和有规律,后一项是前一项的两倍或者两倍+1,按照这个规律,可以暴力出前缀和+2就是答案,直接打表模上10007,求出10万项先看看
发现ans[10007] = ans[1] = 2 ans[10008] = ans[2] = 2 ans[10009] = ans[3] = 3,之后的每一项都是这样
找到循环节
那么直接求出前10006项即可,对于n直接模上10006即可,注意模上10006之后会出现等于0的情况,可以将ans[0] = ans[10006],也可以通过特殊的取模运算。
对于n 求n - 1 % 10006 + 1,那么就是他的对应项数,10006对应着就是10006,10007 对应 1
#include<bits/stdc++.h>
using namespace std;
int a[];
int main()
{
a[] = ;a[] = ;
int v = ;
for(int i = ; i <= ; i++)
{
a[i] = a[i - ] * + v;
v = !v;
a[i] %= ;
//cout<<i<<" "<<a[i]<<endl;
}
int n;
int T, cases = ;
cin >> T;
while(T--)
{
//将n模上10006转化到10006上面
cin >> n;
n = (n - ) % + ;
printf("Case #%d: %d\n", ++cases, (a[n] + ) % );
}
return ;
}
hdu-3524 Perfect Squares---打表+找规律+循环节的更多相关文章
- HDU 4731 Minimum palindrome 打表找规律
http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...
- CF R 633 div 1 1338 C. Perfect Triples 打表找规律
LINK:Perfect Triples 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即. a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于 ...
- HDU 3032 (SG打表找规律)
题意: 有n堆石子,alice先取,每次可以选择拿走一堆石子中的1~x(该堆石子总数) ,也可以选择将这堆石子分成任意的两堆.alice与bob轮流取,取走最后一个石子的人胜利. 思路: 因为数的范围 ...
- 数学--数论--HDU - 6124 Euler theorem (打表找规律)
HazelFan is given two positive integers a,b, and he wants to calculate amodb. But now he forgets the ...
- 2019南昌网络赛H The Nth Item(打表找询问循环节 or 分段打表)
https://nanti.jisuanke.com/t/41355 思路 从fib循环节入手,\(O(1e7log(1e9))\),tle 因为只需要输出所有询问亦或后的结果,所以考虑答案的循环节, ...
- hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)
Nim or not Nim? Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Sub ...
- HDU 5753 Permutation Bo (推导 or 打表找规律)
Permutation Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...
- HDU 5795 A Simple Nim(SG打表找规律)
SG打表找规律 HDU 5795 题目连接 #include<iostream> #include<cstdio> #include<cmath> #include ...
- HDU 4861 Couple doubi (数论 or 打表找规律)
Couple doubi 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/D Description DouBiXp has a ...
随机推荐
- Hibernate各种查询操作(二)
一.QBC的查询方式 使用QBC不在需要写hql语句,而是使用criteria对象的各种方法来实现. 1.查询所有 //使用QBC方式查询所有 @Test public void test11(){ ...
- jQuery 的动画效果图片----隐藏打开方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 获取单个checkbox选中项
1.获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[type='checkbox']: ...
- golang中的make与new
golang 中有两个内存分配机制 :new和make,二者有明显区别. new:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值.其自身是一个指针.可用于初始化任何类 ...
- 如何删除eclipse中已经保存的svn密码
一.打开eclipse--->点击Window--->点击Perference,打开eclipse配置,输入svn,然后点击svn,找到下方svn接口,查看下svn是什么类型的接口,如果是 ...
- Java 基础(8)——流程控制
上次的运算符都消化好了吗?每一天都要用到一些哦~ 以前有提到过一嘴,程序执行都是从上到下执行的,emm,学到这里,感觉这句话是对的也是错的了…… 如果都是一行一行执行下去的话,上节课的例子: 今天不上 ...
- java爬虫之入门基础
相比于C#,java爬虫,python爬虫更为方便简要,首先呢,python的urllib2包提供了较为完整的访问网页文档的API,再者呢对于摘下来的文章,python的beautifulsoap提供 ...
- SQL语句整理(一) 数据库查询语言DQL
前言: 这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点. 我的教材是人大王珊老师的<数据库系统概论>. 因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试 ...
- poj 1276(多重背包+最接近)
http://www.cnblogs.com/rainydays/archive/2013/03/08/2950258.html http://www.cnblogs.com/ziyi--caolu/ ...
- linux下查看内存的使用情况
windows上有各种软件可以进行“一键加速”之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习).而任务管理器也可以很方便地查看各进程使用的内存情况,如下图: 同样地,linux ...