[xdu1227]Godv的数列(crt+lucas)

解题关键:1001=7*11*13,模数非常小,直接暴力lucas。递归次数几乎为很小的常数。最后用中国剩余定理组合一下即可。

模数很小时,一定记住lucas定理的作用

http://acm.xidian.edu.cn/problem.php?id=1227

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=1e5+7;
 5 const int mod=1001;
 6 inline int read(){
 7     char k=0;char ls;ls=getchar();for(;ls<‘0‘||ls>‘9‘;k=ls,ls=getchar());
 8     int x=0;for(;ls>=‘0‘&&ls<=‘9‘;ls=getchar())x=(x<<3)+(x<<1)+ls-‘0‘;
 9     if(k==‘-‘)x=0-x;return x;
10 }
11 int a[maxn],fac[5][maxn],inv[5][maxn];
12 ll mod_pow(ll x,ll n,ll p){
13     ll res=1;
14     while(n){
15         if(n&1) res=res*x%p;
16         x=x*x%p;
17         n>>=1;
18     }
19     return res;
20 }
21 ll comb(ll n,ll m,ll p){
22     if(n==m) return 1;
23     if(n<m) return 0;
24     if(m>n-m) m=n-m;
25
26     ll tn=1,tm=1;
27     while(m){
28         tn=tn*n%p;
29         tm=tm*m%p;
30         n--,m--;
31     }
32     return tn*mod_pow(tm,p-2,p)%p;
33 }
34 ll lucas(ll n,ll m,ll p){
35     ll res=1;
36     while(m){
37         res=res*comb(n%p,m%p,p)%p;
38         n/=p;
39         m/=p;
40     }
41     return res;
42 }
43 int main(){
44     int t,n;
45     t=read();
46     while(t--){
47         n=read();
48         for(int i=1;i<=n;i++) a[i]=read()%1001;
49         int ans=0,t1,t2,tans,t3;
50         for(int i=1;i<=n;i++){
51             t3=lucas(n-1,i-1,13);
52             t2=lucas(n-1,i-1,11);
53             t1=lucas(n-1,i-1,7);
54             tans=(715*t1+364*t2+924*t3)%1001;
55             ans=(ans+tans*a[i])%1001;
56         }
57         printf("%d\n",ans);
58     }
59     return 0;
60 }
时间: 2024-10-10 06:34:42

[xdu1227]Godv的数列(crt+lucas)的相关文章

一个思考Exlucas时的错误思路和对CRT的一些理解

一个思考Exlucas时的错误思路和对CRT的一些理解 小引 此文章是记录一些学习 \(Exlucas\) 时纠结的问题. 问题的原因是对 \(CRT\) 的理解不通彻,在此做出一些探讨. 正文 \(Exlucas\) 的模板问题是求: \[ C^{n}_{m}\quad(mod\;p) \] 其中, \(n\) , \(m\) 很大,不能够直接求阶乘.\(p\) 大小可接受但是不保证是质数. 扩展的思路是把 \(p\) 进行质因数分解,然后分别模分解后的 \(p_i^k\) 再用 \(CRT\

bzoj1951

CRT+LUCAS+费马小定理+拓展欧拉定理 幂指数太大了怎么办?欧拉定理,n太大了怎么办?上lucas,模数太大了怎么办?上crt.然后就好了,唯一注意的是要用拓展欧拉定理,n%phi(p)+phi(p) #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; typedef lo

HDU 5446 Unknown Treasure(Lucas定理+CRT)

[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5446 [题目大意] 给出一个合数M的每一个质因子,同时给出n,m,求C(n,m)%M. [题解] 首先我们可以用Lucas定理求出对答案对每个质因子的模,然后我们发现只要求解这个同余方程组就可以得到答案,所以我们用中国剩余定理解决剩下的问题. [代码] #include <cstdio> #include <cstring> #include <algorithm> u

hdu 5446 lucas+crt+按位乘

http://acm.hdu.edu.cn/showproblem.php?pid=5446 题意:题目意思很简单,要你求C(n,m)mod p的值 p=p1*p2*...pn; 题解:对于C(n,m)mod p 由于n,m的值很大 我们用lucas定理把n,m的范围缩小.由于模数是由若干个素数的乘积组成,那么对于最终要求的解x,我们可以用中国剩余定理求解.中国剩余定理如下: 设正整数两两互素,则同余方程组 有整数解.并且在模下的解是唯一的,解为 其中,而为模的逆元. 最后说一点,由于数据的范围

数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任何

[bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT

Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃

[BZOJ 1951][Sdoi2010]古代猪文(Lucas+CRT+费马小定理)

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪

bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)

https://www.lydsy.com/JudgeOnline/problem.php?id=1951 先欧拉降幂 然后模数质因数分解 分别计算组合数的结果,中国剩余定理合并 #include<cmath> #include<cstdio> #include<iostream> using namespace std; const int mod=999911659; const int phi=mod-1; typedef long long LL; int p[

P2480 [SDOI2010]古代猪文 Lucas+CRT合并

\(\color{#0066ff}{ 题目描述 }\) 猪王国的文明源远流长,博大精深. iPig在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为N.当然,一种语言如果字数很多,字典也相应会很大.当时的猪王国国王考虑到如果修一本字典,规模有可能远远超过康熙字典,花费的猪力.物力将难以估量.故考虑再三没有进行这一项劳猪伤财之举.当然,猪王国的文字后来随着历史变迁逐渐进行了简化,去掉了一些不常用的字. iPig打算研究古时某个朝代的猪文文字.根据相关文献记载,那个朝代流传的猪文文字恰好为远