居然没人写常系数齐次线性递推/jy

题意明确。

首先我们注意到这个系数是在幂上面的,这道题的各种信息都是建立在乘法上的,十分不好处理,考虑求一个 \(\ln\) 将这些信息建立在加法上。

\[\ln f[n]=\sum_{i=1}^kb[i]\ln f[n-i]
\]

可以发现这个问题变成了一般的常系数齐次线性递推。

然后发现 \(f_1 \sim f_{k-1}\) 在取了 \(\ln\) 之后全部都变成了 \(0\)。

考虑使用常系数齐次线性递推的老算法,因为老算法算的实际上是前 \(k\) 项对第 \(n\) 项的贡献。

所以跑一遍老算法就能够得到有 \(x \times \ln f[k] = \ln f[n]\),也就是 \(f[k]^x = f[n]\)。

于是只需要在模质数的意义下做 \(k\) 次剩余即可。

#include<unordered_map>
#include<cstdio>
typedef unsigned ui;
const ui M=205,MOD=119<<23,mod=MOD|1;
ui len,n,m,p[M];
inline ui pow(ui a,ui b=mod-2){
ui ans(1);for(;b;b>>=1,a=1ull*a*a%mod)if(b&1)ans=1ull*ans*a%mod;return ans;
}
inline ui Ln(const ui&x){
ui i,y;const ui X=3,Y=393213064,M=31596;std::unordered_map<ui,ui>hs;
if(hs.empty()){
for(y=1,i=1;i<=M&&(y=1ull*y*X%mod);++i)hs[y]=i;hs[1]=0;
}
for(y=1,i=1;i<=M&&(y=1ull*y*Y%mod);++i)if(hs.find(1ull*y*x%mod)!=hs.end())return(hs[1ull*y*x%mod]+i*M)%MOD;
return-1;
}
inline void times(ui*f,ui*g,ui*P,const ui&len){
ui i,j,t;static ui sav[M];
for(i=0;i^len;++i)if(f[i])for(j=0;j^len;++j)if(g[j])sav[i+j]=(sav[i+j]+1ull*f[i]*g[j])%MOD;
for(i=len*2-1;i>=len;--i)if(sav[i])for(t=sav[i],j=len;~j;--j)sav[i-j]=(sav[i-j]+1ull*t*P[j])%MOD;
for(i=0;i^len;++i)f[i]=sav[i],sav[i]=0;
}
inline ui Solve(ui*P,const ui&len,ui n){
static ui f[M],sav[M];if(len^1)f[1]=1;else f[0]=p[1];sav[0]=1;
for(;n;n>>=1,times(f,f,P,len))if(n&1)times(sav,f,P,len);return sav[len-1];
}
ui gcd(const ui&a,const ui&b){
return b?gcd(b,a%b):a;
}
void exgcd(int a,int b,int&x,int&y){
if(!b)return x=1,y=0,void();exgcd(b,a%b,y,x);y-=a/b*x;
}
signed main(){
ui i,ans(0);int a,b,x,y;scanf("%u",&len);p[0]=MOD-1;for(i=1;i<=len;++i)scanf("%u",p+i);scanf("%u%u",&n,&m);
if(n<len)return printf("-1"),0;
a=Solve(p,len,n-1);b=Ln(m);i=gcd(a,MOD);
if(b%i)return printf("-1"),0;a/=i;b/=i;exgcd(a,MOD/i,x,y);
printf("%u",pow(3,1ull*b*(x+MOD/i)%(MOD/i)));
}

CF1106F题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Maven多环境配置实战 filter

    目前在开发一个wap项目,主要有开发.测试和最终部署上线几个阶段,每个阶段对配置(数据库.日志)都有不同的设置.以前都是以开发环境为主,在测试和部署上线时由部署工程师负责修改配置并上线.但是公司并非都 ...

  2. php函数(parse_str()

    parse_str()函数 把查询字符串解析到变量中 parse_str(string, array); string 规定要解析的字符串 array 存储变量的数组名称 例子: <?php p ...

  3. 让我一时不知所措 Linux 常用命令 爱情三部曲 下部

    Linux目录与文件管理 我试着把你忘记,可总在夜里想你~ 1.linux目录结构 2.查看及检索文件 3.压缩及解压缩文件 4.vi文本编辑器 1.Linux目录结构:树形目录结构根目录:所有分区, ...

  4. CSS解决父级边框坍塌的问题

    1. 浮动元素后面增加空的div 首先在父级标签内添加如下<div>标签 <div id="clear"></div> 然后在CSS中对该标签进 ...

  5. 浅谈java代理模式

    讲解java代理模式 目录 讲解java代理模式 何谓代理模式 静态代理 动态代理 JDK动态代理 CGLIB动态代理 何谓代理模式 代理模式,即Proxy Pattern,23种java常用设计模式 ...

  6. 面试官:谈谈你对IO流和NIO的理解

    一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...

  7. 精简的言语讲述技术人,必须掌握基础性IT知识技能,第一篇

    前言 此系列将以精简的言语讲述技术人,必须掌握基础性IT知识技能,请持续关注,希望给大家都是一些精简的干货. 第一部分:必须掌握的设计模式的6大基本原则 23个设计模式,都是从这六大设计模式中演化而来 ...

  8. Solution -「洛谷 P4449」于神之怒加强版

    \(\mathcal{Description}\)   Link.   给定 \(k\) 和 \(T\) 组 \(n,m\),对于每组,求 \[\sum_{i=1}^n\sum_{j=1}^m\ope ...

  9. 微服务从代码到k8s部署应有尽有系列(三、鉴权)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  10. VUE3 之 动画与过渡的实现 - 这个系列的教程通俗易懂,适合新手

    1. 概述 光环效应告诉我们: 当一个人在某一方面取得了巨大的成功,人们就会给他贴上正面的标签,这个人从此就被"优秀"的光环所笼罩,他做的一切,人们都认为是正确的. 例如:越是名气 ...