洛咕 P2480 [SDOI2010]古代猪文


题目是要求\(G^{\sum_{d|n}C^d_n}\)。

用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658}}\)

因数可以\(O(\sqrt n)\)枚举。

分解质因数,\(999911658=2×3×4679×35617\),对这4个模数用lucas跑一遍答案,用crt合并。

// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define il inline
#define vd void
#define MOD 999911659
#define Mod 999911658
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
const int mod[]={0,2,3,4679,35617};
int p[5][35700],inv[5][35700],ans[5];
il int pow(int x,int y,int mo){
int ret=1;
while(y){
if(y&1)ret=1ll*ret*x%mo;
x=1ll*x*x%mo;y>>=1;
}
return ret;
}
il int C(int x,int y,int m){return 1ll*p[m][x]*inv[m][1ll*p[m][y]*p[m][x-y]%mod[m]]%mod[m];}
il int Lucas(int x,int y,int m){
if(x<y)return 0;if(!x)return 1;
return 1ll*Lucas(x/mod[m],y/mod[m],m)*C(x%mod[m],y%mod[m],m)%mod[m];
}
int main(){
#ifndef ONLINE_JUDGE
freopen("2480.in","r",stdin);
freopen("2480.out","w",stdout);
#endif
int n=gi(),g=gi();
if(g==MOD)return puts("0"),0;
for(int i=1;i<=4;++i){
p[i][0]=1;for(int j=1;j<mod[i];++j)p[i][j]=1ll*p[i][j-1]*j%mod[i];
inv[i][1]=1;for(int j=2;j<mod[i];++j)inv[i][j]=(mod[i]-1ll*(mod[i]/j)*inv[i][mod[i]%j]%mod[i])%mod[i];
}
for(int i=1;i*i<=n;++i)
if(n%i==0){
for(int j=1;j<=4;++j)ans[j]=(ans[j]+Lucas(n,i,j))%mod[j];
if(i*i!=n)for(int j=1;j<=4;++j)ans[j]=(ans[j]+Lucas(n,n/i,j))%mod[j];
}
int tot=0;
for(int i=1;i<=4;++i)tot=(tot+1ll*ans[i]*(Mod/mod[i])%Mod*inv[i][(Mod/mod[i])%mod[i]]%Mod)%Mod;
printf("%d\n",pow(g,tot,MOD));
return 0;
}

洛咕 P2480 [SDOI2010]古代猪文的更多相关文章

  1. 洛谷 P2480 [SDOI2010]古代猪文 解题报告

    P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...

  2. 洛谷 P2480 [SDOI2010]古代猪文 题解【欧拉定理】【CRT】【Lucas定理】

    数论综合题. 题目背景 题目背景与题目无关因此省略.题目链接 题目描述 猪王国的文明源远流长,博大精深. iPig 在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为 \(N\).当然,一种语 ...

  3. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  4. 洛谷P2480 [SDOI2010]古代猪文

    要求(图是盗来的QAQ) 首先用欧拉定理把幂模一下,直接就是MOD-1了 然后发现MOD-1可以分解为2,3,4679,35617,都是质数,可以直接用Lucas定理 然后用中国剩余定理合并一下即可 ...

  5. 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)

    传送门 好吧我数学差的好像不是一点半点…… 题目求的是$G^{\sum_{d|n}C^d_n}mod\ 999911659$ 我们可以利用费马小定理$a^{k}\equiv a^{k\ mod\ (p ...

  6. 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理

    P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...

  7. P2480 [SDOI2010]古代猪文

    P2480 [SDOI2010]古代猪文 比较综合的一题 前置:Lucas 定理,crt 求的是: \[g^x\bmod 999911659,\text{其中}x=\sum_{d\mid n}\tbi ...

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

    \(\color{#0066ff}{ 题目描述 }\) 猪王国的文明源远流长,博大精深. iPig在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为N.当然,一种语言如果字数很多,字典也相应会 ...

  9. luogu P2480 [SDOI2010]古代猪文

    M_sea:这道题你分析完后就是一堆板子 废话 理解完题意后,我们要求的东西是\(G^s(s=\sum_{d|n} \binom{n}{d})\) 但是这个指数\(s\)算出来非常大,,, 我们可以利 ...

随机推荐

  1. javascript版format函数,方便实现复杂字串连接

    javascript版format函数,方便实现复杂字串连接 String.prototype.format = function () { var args = arguments; console ...

  2. [翻译] TransitionKit

    TransitionKit https://github.com/blakewatters/TransitionKit A simple, elegantly designed block based ...

  3. 铁乐学Python_day08_文件操作

    一.[基本的文件操作] 参数: 1.文件路径: 2.编码方式: 3.执行动作:(打开方式)只读,只写,追加,读写,写读! #1. 打开文件,得到文件句柄并赋值给一个变量 f = open('E:/Py ...

  4. CMake: Could NOT find PkgConfig

    转自http://www.ogre3d.org/forums/viewtopic.php?f=22&t=78490 Looking for OGRE... Could NOT find Pkg ...

  5. (转)图形学理论知识 BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)

    BRDF理论 BRDF表示的是双向反射分布函数(Bidirectional Reflectance Distribution Function),它描述了光线如何在物体表面进行反射,可以用来描述材质属 ...

  6. Hadoop HBase概念学习系列之HBase里的时间戳(二十六)

    HBase集群要求每个节点的时间必须同步.HBase对于节点的时间扭曲(time skew)容忍度很低(这和HDFS是不一样的). 这主要是因为HBase需要使用系统时间来产生时间戳.如果系统时间不同 ...

  7. VB ASP 使用 now() 时默认格式调整方法

    修改注册表 [HKEY_USERS\.DEFAULT\Control Panel\International] "sShortDate"="yyyy-M-d" ...

  8. fun() 的 拆分和 for 遍历 的结合---------> 函数容器

    fun() 的 拆分和 for 遍历 的结合--------->  函数容器

  9. list(range())--------range创建一个list列表 遍历索引range(len()) 和 list(range())创建列表

    lst = list(range(15,26)) #注,list(range())用的是小括号哦print(lst)

  10. Call to undefined function mysqli_connect() in xx.连接数据库出现mysqli_connect()未定义的问题。

    这个是我在执行php代码的时候出现的一个错误,我在网上查了好久,也按照网上常用的方法去修改,都没有效果. 例如:1.新建一个php文件: <?php print phpinfo(); ?> ...