欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常
解题思路:
首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子:
F(n)=15[(1+52)n−(1−52)n]F(n) = {1\over\sqrt5}[({1+\sqrt5\over2})^n-({1-\sqrt5\over2})^n]F(n)=51[(21+5)n−(21−5)n]
令a=1+52,b=1−52,p=5令a={1+\sqrt5\over2},b={1-\sqrt5\over2},p=\sqrt5令a=21+5,b=21−5,p=5
这些是mod(1e9+9)下的逆元
那么F(n)=1p(an−bn)F(n)={1\over p}(a^n-b^n)F(n)=p1(an−bn)
∑i=0nF(i∗c)k=(1p)k∑i=0n(ai∗c−bi∗c)k\sum_{i=0}^{n}F(i*c)^k=({1\over p})^k\sum_{i=0}^{n}(a^{i*c}-b^{i*c})^k∑i=0nF(i∗c)k=(p1)k∑i=0n(ai∗c−bi∗c)k
我们看一下:(ai∗c−bi∗c)k我们看一下:(a^{i*c}-b^{i*c})^k我们看一下:(ai∗c−bi∗c)k
进行多项式展开:进行多项式展开:进行多项式展开:
1.Ck0ai∗c∗(k−0)((−b)i∗c)0+Ck1ai∗c∗(k−1)((−b)i∗c)1+...+Ckkai∗c∗(k−k)((−b)i∗c)k=∑r=0kCkrai∗c∗(k−r)(−b)i∗c∗r1.C_k^0a^{i*c*(k-0)}((-b)^{i*c})^0+C_k^1a^{i*c*(k-1)}((-b)^{i*c})^1+...+C_k^ka^{i*c*(k-k)}((-b)^{i*c})^k=\sum_{r=0}^kC_k^ra^{i*c*(k-r)}(-b)^{i*c*r}1.Ck0ai∗c∗(k−0)((−b)i∗c)0+Ck1ai∗c∗(k−1)((−b)i∗c)1+...+Ckkai∗c∗(k−k)((−b)i∗c)k=∑r=0kCkrai∗c∗(k−r)(−b)i∗c∗r
2.∑i=0nF(i∗c)k=(1p)k∑i=0n∑r=0kCkrai∗c∗(k−r)((−b)i∗c)r2.\sum_{i=0}^{n}F(i*c)^k=({1\over p})^k\sum_{i=0}^{n}\sum_{r=0}^kC_k^ra^{i*c*(k-r)}((-b)^{i*c})^r2.∑i=0nF(i∗c)k=(p1)k∑i=0n∑r=0kCkrai∗c∗(k−r)((−b)i∗c)r
3.(1p)k∑i=0n∑r=0kCkr(−1)rai∗c∗(k−r)bi∗c∗r3.({1\over p})^k\sum_{i=0}^{n}\sum_{r=0}^kC_k^r(-1)^ra^{i*c*(k-r)}b^{i*c*r}3.(p1)k∑i=0n∑r=0kCkr(−1)rai∗c∗(k−r)bi∗c∗r
进行和式调整进行和式调整进行和式调整
4.(1p)k∑r=0kCkr(−1)r∑i=0nai∗c∗(k−r)bi∗c∗r4.({1\over p})^k\sum_{r=0}^kC_k^r(-1)^r\sum_{i=0}^{n}a^{i*c*(k-r)}b^{i*c*r}4.(p1)k∑r=0kCkr(−1)r∑i=0nai∗c∗(k−r)bi∗c∗r
令t=ak−rbr令t=a^{k-r}b^r令t=ak−rbr
5.(1p)k∑r=0kCkr(−1)r∑i=0n(tc)i5.({1\over p})^k\sum_{r=0}^kC_k^r(-1)^r\sum_{i=0}^{n}(t^c)^i5.(p1)k∑r=0kCkr(−1)r∑i=0n(tc)i
这道题卡常数:1.我们要预处理所有的阶乘
2.对于tct^ctc的求法我们要用递推的形式
t1=t0∗(b∗inv(a))ct_1=t_0*(b*inv(a))^ct1=t0∗(b∗inv(a))c
3.对于n,c∈[1,1e18]我们要运用欧拉降幂的方法n,c\in[1,1e18]我们要运用欧拉降幂的方法n,c∈[1,1e18]我们要运用欧拉降幂的方法
#include <iostream>
#include <cstdio>
#include <stack>
#include <sstream>
#include <vector>
#include <map>
#include <cstring>
#include <deque>
#include <cmath>
#include <iomanip>
#include <queue>
#include <algorithm>
#include <set>
#define mid ((l + r) >> 1)
#define Lson rt << 1, l , mid
#define Rson rt << 1|1, mid + 1, r
#define ms(a,al) memset(a,al,sizeof(a))
#define log2(a) log(a)/log(2)
#define _for(i,a,b) for( int i = (a); i < (b); ++i)
#define _rep(i,a,b) for( int i = (a); i <= (b); ++i)
#define for_(i,a,b) for( int i = (a); i >= (b); -- i)
#define rep_(i,a,b) for( int i = (a); i > (b); -- i)
#define lowbit(x) ((-x) & x)
#define IOS std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 0x3f3f3f3f
#define hash Hash
#define next Next
#define count Count
#define pb push_back
#define f first
#define s second
using namespace std;
const int N = 2e5+10, mod = 1e9 + 9;
const long double eps = 1e-5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
typedef pair<double,double> PDD;
template<typename T> void read(T &x)
{x = 0;char ch = getchar();ll f = 1;while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
}
template<typename T, typename... Args> void read(T &first, Args& ... args)
{read(first);read(args...);
}
const ll A = 691504013;//斐波那契通项公式的a
const ll B = 308495997;//斐波那契数列通项的b
const ll INVMOD = 1e9 + 8;//mod的逆元
const ll INV2 = 5e8 + 5;//2%(mod)的逆元
const ll INV5 = 383008016;//5的逆元
const ll I5=276601605;
int T;
ll n, c, k;
ll fac[N], fac_inv[N];
ll pa[N], pb[N];inline ll qmi(ll a, ll b)
{ll res = 1;while(b){if(b & 1) res = (res * a) % mod;b >>= 1;a = (a * a) % mod;}return res % mod;
}inline void Pre(int n)
{fac[0] = 1;for(int i = 1; i <= n; ++ i) fac[i] = i * fac[i - 1] % mod;fac_inv[0] = fac_inv[1] = 1;for(int i = 2; i <= n; ++ i) fac_inv[i] = qmi(fac[i],mod-2) % mod;pa[0]=1; for (int i = 1; i <= n; i++) pa[i] = pa[i-1] * A % mod;pb[0]=1; for (int i = 1; i <= n; i++) pb[i] = pb[i-1] * B % mod;}inline ll C(int n,int m){return fac[n]*fac_inv[m]%mod*fac_inv[n-m]%mod;
}inline ll Inv(ll x){return qmi(x,mod-2);
}inline void Slove()
{ll ans = 0;ll tui = qmi(B * qmi(A,mod - 2) % mod,c);//递推求tll t = qmi(pa[k] % mod ,c) % mod;for(int i = 0; i <= k; ++ i){ll tmp = (t == 1) ? n % mod : t*(qmi(t,n % INVMOD + INVMOD)-1+mod)%mod*Inv(t-1) % mod;if(i & 1) ans-=C(k,i)*tmp%mod;else ans+=C(k,i)*tmp%mod;//预处理了组合数if(ans < 0) ans = (ans + mod) % mod;else ans %= mod;t = t * tui % mod;}ans = ans * qmi(I5,k) % mod;cout << ans % mod << endl;
}int main()
{Pre(100001);read(T);while(T --){read(n,c,k);c < INVMOD ? c = c : c = c % INVMOD + INVMOD;//欧拉降幂Slove();}return 0;
}
欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常相关推荐
- 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]
题目链接 题目大意: 给定nnn个节点的树,问删除尽可能小的点使得树的直径不超过KKK,输出最小删除的点数,(1<=k<=n<=3e5)(1<=k<=n<=3e5) ...
- 2020杭电多校(二) New Equipments(最小费用最大流)
New Equipments 思路 数据已经有提示了b∗b<=4∗a∗cb * b <= 4 * a * cb∗b<=4∗a∗c,这意味着,每一个a,b,ca, b, ca,b,c构 ...
- 2020 杭电多校5 1007、1008、1011
1007 tree (hdu 6820) 题意: 输入 n,kn,kn,k ,给定一棵带权树,包含 nnn 个节点,要求找到一个权重和最大的子树,使得这个子树度数大于 kkk 的节点不超过 111 个 ...
- 2020杭电多校第六场 A Very Easy Math Problem 莫比乌斯反演 (HDU 6833)
A Very Easy Math Problem 题解 ∑ a 1 = 1 n ∑ a 2 = 1 n ⋅ ⋅ ⋅ ∑ a x = 1 n ( ∏ j = 1 x a j k ) f ( g c d ...
- 2020杭电多校训练(第一、二场)
目录 第一场 1005.Fibonacci-Sum 1009.Leading-Robots 1006.Finding-a-MEX 第二场 1012.String-Distance 1005.New-E ...
- 2020杭电多校训练(第五、六场)
目录 第五场 1001.Tetrahedron 1009.Paperfolding 1003.Boring-Game 1012.Set1 1007.Tree 第六场 1006.A-Very-Easy- ...
- 【2020杭电多校】 Lead of Wisdom 【暴搜】
这道题,我还以为是什么状压dp(看到dp头就疼)? 我是不是脑瘫了,一开始想过暴搜,就这?最坏时间复杂度跑一遍早就超过1e8了,一秒肯定跑不完,能过?弃了弃了,谁知道题目给了8000ms!!! 什么是 ...
- 2020杭电多校第二场 Lead of Wisdom(爆搜)
Problem Description In an online game, "Lead of Wisdom" is a place where the lucky player ...
- 2020杭电暑期多校02 10 - Lead of Wisdom (HDU6772) 常数坑
20200725005909 2020杭电暑期多校02 10 - Lead of Wisdom (HDU6772) 常数坑 如果一直 TLE,就看第三章. 一.题意 物品可能的种类有 kkk 种,编号 ...
最新文章
- Spring @Autowired 注入为 null
- 实战SSM_O2O商铺_48【用户登录】用户登录Dao-Service-Controller-View层的开发
- android 导入系统证书,安卓手机添加系统证书方法(HTTPS抓包)
- python核心编程6-14习题的解题思路
- C#调用C++Dll封装时遇到的一系列问题 参考
- 美国计算机专业硏究生,2014年美国计算机专业研究生排名
- DirectX 基础学习系列5 纹理映射
- 平面设计背景素材|打造超酷的炫彩光束光效海报!
- Function与Module的差异与应用场景
- 运维,请警惕脚本灾难!
- 大学计算机课思维导图,快速记忆和理解大学计算机思维导图
- HDLC(High-Level Data Link Control)(对比以太网)
- HDU 6441(费马大定理+奇偶数列法)
- NULL, '\0',0 '0'的区别
- 小蜜蜂商城系统解析,结合众筹卖货活动,流水千万
- UI设计中图标设计规范是什么
- 看了 Google 大神 Jeff Dean 的传说,我拜服了~
- java validate 框架_使用validate验证框架
- 校园网拨号上网一直掉线但实际网络通路是连接着的
- 成人用品的UML建模