【bzoj1951】: [Sdoi2010]古代猪文 数论-中国剩余定理-Lucas定理
因为999911659是个素数
欧拉定理得
然后指数上中国剩余定理
然后分别lucas定理就好了
注意G==P的时候的特判
/* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define ll long long const ll P=;
const ll p1[] = {, , , , };
const ll N=;
ll g,n,cnt=;
ll fac[N+],ifac[N+];
ll p[N],ans[]; ll Q_pow(ll a,ll b,ll p){
ll ans=;
while (b){
if (b&) ans=ans*a%p;
a=a*a%p;
b=(b>>);
}
return ans;
} void FAC(ll p){
ifac[]=fac[]=;
for (int i=;i<=N;i++) fac[i]=fac[i-]*i%p,ifac[i]=Q_pow(fac[i],p-,p);
} ll C(ll n,ll m,ll p){
if (m>n) return ;
return fac[n]*ifac[m]%p*ifac[n-m]%p;
} ll lucas(ll n,ll m,ll p){
if (m==) return ;
return lucas(n/p,m/p,p)*C(n%p,m%p,p)%p;
} void fj(ll x){
for (int i=;i*i<=x;i++){
if (x%i==){
p[++cnt]=i;
if (i*i!=x) p[++cnt]=n/i;
}
}
} ll gcd(ll a,ll b){return b ? gcd(b,a%b) : a;} void ex_gcd(ll a,ll b,ll &x,ll &y){
if (b==){x=;y=;return;}
ex_gcd(b,a%b,y,x);
y-=x*(a/b);
} ll China(){
ll a0=ans[],p0=p1[];
for (int i=;i<=;i++){
ll x,y,g=gcd(p0,p1[i]);
ex_gcd(p0,p1[i],x,y);
x=(x*(ans[i]-a0)%p1[i]+p1[i])%p1[i];
a0=a0+x*p0;
p0=p0/g*p1[i];
}
return a0;
} void work(){
for(int i=;i<=;i++){
FAC(p1[i]);
for (int j=;j<=cnt;j++){
ans[i]=(ans[i]+lucas(n,n/p[j],p1[i]))%p1[i];
}
}
printf("%lld\n",Q_pow(g,China(),P));
} int main(){
scanf("%lld%lld",&n,&g);
if (g==P) {puts(""); return ;}
fj(n);
work();
return ;
}
各种zz的错误。。调了一年
而且跑的巨慢无比。。
【bzoj1951】: [Sdoi2010]古代猪文 数论-中国剩余定理-Lucas定理的更多相关文章
- BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】
题目 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那 ...
- bzoj 1951: [Sdoi2010]古代猪文 【中国剩余定理+欧拉定理+组合数学+卢卡斯定理】
首先化简,题目要求的是 \[ G^{\sum_{i|n}C_{n}^{i}}\%p \] 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 \[ G^{\sum_{i|n}C_{n}^{i} ...
- bzoj1951 [Sdoi2010]古代猪文 ——数论综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意就是要求 G^( ∑(k|n) C(n,k) ) % p,用费马小定理处理指数,卢 ...
- 【BZOJ1951】古代猪文(CRT,卢卡斯定理)
[BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...
- BZOJ 1951: [Sdoi2010]古代猪文( 数论 )
显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...
- BZOJ1951 [Sdoi2010]古代猪文 中国剩余定理 快速幂 数论
原文链接http://www.cnblogs.com/zhouzhendong/p/8109156.html 题目传送门 - BZOJ1951 题意概括 求 GM mod 999911659 M=∑i ...
- BZOJ1951[SDOI2010]古代猪文
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- BZOJ1951:[SDOI2010]古代猪文(Lucas,CRT)
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
随机推荐
- Spring 与 MyBatis 的整合
本文讨论 Spring 与 MyBatis 的整合. 在 beans.xml 中我们定义了两个 bean: SqlSessionFactoryBean.SqlSessionTemplate. 1.Sq ...
- HTTP-Runoob:HTTP请求方法
ylbtech-HTTP-Runoob:HTTP请求方法 1.返回顶部 1. HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, PO ...
- JS:Window
ylbtech-JS:Window 1.返回顶部 1.happy.js ; (function () { var happyUi = { initHappy: function (type) { ut ...
- mybatis 学习四 (上)resutlMap
SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: ...
- strcmp与strncmp的区别
================== strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串. strcmp C/C++函数,比较两个字符串 设这两个字符串为str1,s ...
- iOS开发之---KVC全解
————————————————————————————————————————————————————————————— 一 KVC的基本概念 KVC是Key Value Coding的缩写,意思是 ...
- C Primer Plus学习笔记(五)- C控制语句:循环
伪代码的概念: 伪代码是一种用简单的句子表示程序思路的方法,它与计算机语言的形式相对应.伪代码有助于设计程序的逻辑.确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码.使用伪代码的好处之一是,可以 ...
- 实验吧CTF题库-密码学(部分)
这里没有key: 打开链接,有一个弹窗 然后就是一个空白网页,右键查看源代码 这里有一串js密文,解密一下,https://www.dheart.net/decode/index.php 得到flag ...
- 2015.12.12 DataGridveiw中添加checkbox列
最简单的办法是通过DataTable来添加 DataTable中添加bool类型的列 dtpdf.Columns.Add("入库", typeof(bool)); DataRow ...
- Datapump tips
同时导出多个schema下的表 $ expdp system/manager dumpfile=test.dmp logfile=test.log directory=TESTDIR schemas= ...