CQOI2018 九连环 打表找规律 fft快速傅里叶变换
题面:
分析:
个人认为这道题没有什么价值,纯粹是为了考算法而考算法。
对于小数据我们可以直接爆搜打表,打表出来我们可以观察规律。
f[1~10]: 1 2 5 10 21 42 85 170 341 682
我们可以发现的规律是,当i为奇数时,f[i]=f[i-1]*2+1,偶数时f[i]=f[i-1]*2。
既然这样,我们可以推断通项公式是否跟2的次幂有关。
我们连蒙带猜连导带推,可以得出,f[i]=2^(i+1)/3(下取整)。
再结合数据范围,我们可以决定是写fft+快速幂还是写python
这样这道题就结束了。
代码:
#include<bits/stdc++.h>
#define db double
#define ll long long
#define cp complex<db>
using namespace std;
const int N=;
const db pi=acos(-);int r[N];
void fft(cp *a,int *r,int lm,int op){
for(int i=;i<lm;i++)
if(i<r[i]) swap(a[i],a[r[i]]);
for(int mid=;mid<lm;mid<<=){
cp wn;wn=cp(cos(pi/mid),op*sin(pi/mid));
for(int R=mid<<,j =;j<lm;j+=R){
cp w;w=cp(,);
for(int k=;k<mid;k++,w=w*wn){
cp x=a[j+k],y=w*a[j+mid+k];
a[j+k]=x+y;a[j+mid+k]=x-y;
}
}
} return ;
} struct big{
int g[N],len;
big(){
memset(g,,sizeof(g));len=;
} big(int x){
memset(g,,sizeof(g));len=;
if(!x){len=;return ;}
while(x) g[len++]=x%,x/=;
} void operator *=(const big &b){
static cp A[N],B[N];
int nl=len+b.len,lm=,L=;
while(lm<nl) lm<<=,++L;
for(int i=;i<lm;i++)
A[i]=cp(i<len?g[i]:,),
B[i]=cp(i<b.len?b.g[i]:,);r[]=;
for(int i=;i<lm;i++)
r[i]=(r[i>>]>>)|((i&)<<(L-));
fft(A,r,lm,);fft(B,r,lm,);
for(int i=;i<lm;i++) A[i]*=B[i];
fft(A,r,lm,-);int ans[N];
for(int i=;i<lm;i++)
ans[i]=(int)(A[i].real()/lm+0.5);
for(int i=;i<lm;i++)
if(ans[i]>) ans[i+]+=ans[i]/,
ans[i]%=;lm--;
while(lm>&&!ans[lm]) lm--;len=++lm;
for(int i=;i<lm;i++) g[i]=ans[i];
} void operator /= (int x){
int sm=,nl=;
for(int i=len-;~i;i--){
sm=sm*+g[i];
if(sm<x) g[i]=;
else{
if(!nl) nl=i+;
g[i]=sm/x,sm%=x;
}
} len=max(nl,);
} void print(){
for(int i=len-;~i;i--)
printf("%d",g[i]);puts("");
}
}ret,bs;
int main(){
int t;scanf("%d",&t);while(t--){
int n;scanf("%d",&n);n++;
ret=big();bs=big();
while(n){
if(n&) ret*=bs;
bs*=bs;n>>=;
} ret/=;ret.print();
} return ;
}
fft快速傅里叶变换
CQOI2018 九连环 打表找规律 fft快速傅里叶变换的更多相关文章
- ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies (打表找规律+快速幂)
题目链接:https://nanti.jisuanke.com/t/31716 题目大意:有n个孩子和n个糖果,现在让n个孩子排成一列,一个一个发糖果,每个孩子随机挑选x个糖果给他,x>=1,直 ...
- Nowcoder 练习赛 17 C 操作数 ( k次前缀和、矩阵快速幂打表找规律、组合数 )
题目链接 题意 : 给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. ...
- 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...
- CF R 633 div 1 1338 C. Perfect Triples 打表找规律
LINK:Perfect Triples 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即. a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于 ...
- 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 4861 Couple doubi (数论 or 打表找规律)
Couple doubi 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/D Description DouBiXp has a ...
- HDU2149-Good Luck in CET-4 Everybody!(博弈,打表找规律)
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- HDU 5795 A Simple Nim(SG打表找规律)
SG打表找规律 HDU 5795 题目连接 #include<iostream> #include<cstdio> #include<cmath> #include ...
随机推荐
- 用script标签加载
此文已由作者杨帆授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 注:经过更深入的测试,实在不好意思,这篇文章是有问题的 更改script的type属性 并不能通过src来加载 ...
- 洛谷 - P1426 - 小鱼会有危险吗 - 模拟
https://www.luogu.org/problemnew/show/P1426 题目说的是小鱼进入探测器一秒后就会有危险,所以不应该让小鱼先游,而是先检测探测器. #include<bi ...
- N的阶乘HDOJ1042
我记得有一份代码是非常有技巧的,然而这一份就是很死板-每次跑50000,因为10000的阶乘最多才50000位,这样肯定就过了 #include<cstdio> #include<s ...
- PJzhang:计算机本地密码提取工具LaZagne
猫宁!!! 参考链接: https://www.4hou.com/tools/7404.html https://www.secpulse.com/archives/32189.html 在一个信息收 ...
- Beta版本冲刺第三天!
该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业地址:https://edu.cnblogs.com/c ...
- SpringMVC + ajax
1.ajax 返回汉字乱码 解决方法: http://blog.sina.com.cn/s/blog_5f39177b0101it7h.html //方案一 response.setCharacter ...
- AtCoder Regular Contest 081 F - Flip and Rectangles
题目传送门:https://arc081.contest.atcoder.jp/tasks/arc081_d 题目大意: 给定一个\(n×m\)的棋盘,棋盘上有一些黑点和白点,每次你可以选择一行或一列 ...
- HDU - 6063 RXD and math
Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6063 打表发现规律是n^k #include <iostream> #inc ...
- Salazar Slytherin's Locket CodeForces - 855E
Salazar Slytherin's Locket CodeForces - 855E http://www.cnblogs.com/ftae/p/7590187.html 数位dp: http:/ ...
- 金蝶Apusic中间件适配JetSpeed2过程记录
金蝶Apusic中间件适配JetSpeed2过程记录: 1.安装金蝶并配置域,确保域运行正常. 2.参考<JetSpeed2部署至Apusic操作步骤记录>进行应用迁移. https:// ...