题面:

  CQOI2018九连环

分析:

  个人认为这道题没有什么价值,纯粹是为了考算法而考算法。

  对于小数据我们可以直接爆搜打表,打表出来我们可以观察规律。

  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快速傅里叶变换的更多相关文章

  1. ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies (打表找规律+快速幂)

    题目链接:https://nanti.jisuanke.com/t/31716 题目大意:有n个孩子和n个糖果,现在让n个孩子排成一列,一个一个发糖果,每个孩子随机挑选x个糖果给他,x>=1,直 ...

  2. Nowcoder 练习赛 17 C 操作数 ( k次前缀和、矩阵快速幂打表找规律、组合数 )

    题目链接 题意 :  给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. ...

  3. 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用

    转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html    ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...

  4. CF R 633 div 1 1338 C. Perfect Triples 打表找规律

    LINK:Perfect Triples 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即. a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于 ...

  5. hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)

    Nim or not Nim? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

  6. HDU 5753 Permutation Bo (推导 or 打表找规律)

    Permutation Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...

  7. HDU 4861 Couple doubi (数论 or 打表找规律)

    Couple doubi 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/D Description DouBiXp has a ...

  8. 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 ...

  9. HDU 5795 A Simple Nim(SG打表找规律)

    SG打表找规律 HDU 5795 题目连接 #include<iostream> #include<cstdio> #include<cmath> #include ...

随机推荐

  1. qq教xixi写模拟加法【非常爆炸】

    #include<iostream> #include<cstdio> #include<math.h> #include<queue> #includ ...

  2. CF788B Weird journey

    总共有n个节点,m条路径,要求其中m-2条路径走两遍,剩下2条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同. 可以把每条边都拆成两条重边,每条边的度数都是偶数了 ...

  3. Apache Kylin 是什么?

    Apache Kylin的官网 http://kylin.apache.org/cn/ - 可扩展超快OLAP引擎:  Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计 - Hadoop ...

  4. GCD = XOR(GCD XOR )

    首先没看懂XOR(于是百度了一下):异或,英文为exclusive OR,或缩写成xor.同时还有一个OR,于是一起看了一眼: 大意: 输入一个整数n,在1~n内,有多少对整数(a,b)满足GCD(a ...

  5. JSP | 基础 | 加载类失败:com.mysql.jdbc.Driver

    两个原因: 1. 连接数据库需要的jar包没有导入Tomcat的lib库中 解决方案: 打开Tomcat的安装目录下的lib文件夹,把jar包拖进lib库后,重启tomcat服务器 2.  mysql ...

  6. size_t与size_type区别

    size()  标准库string里面有个函数size,用来返回字符串中的字符个数,具体用法如下: string st("The expense of spirit\n");cou ...

  7. background-size属性

    background-size:属性有 auto:length :百分比 length 如:10px 20px 固定的 或者是写成一个 ,10px  另外一个就默认为 auto; 写成百分比的形式 是 ...

  8. Python入门小练习 003 利用cookielib模拟登录获取账户信息

    为了方便, 使用chinaunix的账户获取账户主题. 有些网站可能需要验证码,  找一些不用验证码的网站 下面 ****** 很多个星号的均为私密信息, 所以用星号代替 #!/usr/bin/pyt ...

  9. UvalLive4670(AC自动机模板)

    放上刘汝佳的模板: #include <cstdio> #include <cstring> #include <string> #include <algo ...

  10. background-origin与background-clip的“区别”

    css3新增了一些背景相关的属性,其中background-origin与background-clip是比较让人困惑的: background-origin:用于指定绘制背景图片的起点.默认值:pa ...