传送门

题目描述:

给定整数n,q,计算 $q^{\sum_{d|n} C_{n}^{d}}$ mod 999911659。

输入格式

输入包括一行,包含两个整数n,q,用一个空格隔开。

输出格式

输出包括一行,包含一个整数表示最终结果。

数据范围

1≤n,q≤109

输入样例:

4 2

输出样例:

2048

提示:对于n的每一个正因数d,都有一个的值,将它们全部加起来得到的和就是

题解:经典题,用到的数学知识比较多。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 4e4 + ;
const ll mod = ;
ll fac[N] = {},n,q,b[];
int a[] = {,,,,};
ll qp(ll a,ll b) {
ll ans = ;
for (;b;b>>=,a=a*a%mod)
if (b&) ans = ans * a %mod;
return ans;
}
void exgcd(ll a,ll b,ll &x,ll &y) {
if (b == ) {
x = ;
y = ;
return ;
}
exgcd(b,a%b,y,x);
y -= (a/b)*x;
}
ll getinv(ll a,ll b) {
ll x,y;
exgcd(a,b,x,y);
return (x%b+b)%b;
}
ll lucas(ll x,ll p) {
ll ans = ;
for (ll y = n;x;x/=p,y/=p) {
ll a = x%p, b = y%p;
ans = ans*fac[b]%p*getinv(fac[a],p)%p*getinv(b<a?:fac[b-a],p)%p;
}
return ans;
}
int main(){
scanf("%lld%lld",&n,&q);
q%=mod;
if(!q) {
printf("0\n");
return ;
}
ll mod1 = mod -,ans = ,x,y;
for (ll i = ; i <= ; i++) fac[i] = fac[i-]*i%mod1;
for (ll i = ; i*i<=n; i++)
if (n%i==) {
for (int j = ; j <= ; j++)
b[j] = (b[j]+lucas(i,a[j]))%a[j];
if (i*i!=n) for (int j = ; j <= ; j++)
b[j] = (b[j]+lucas(n/i,a[j]))%a[j];
}
for (int i = ; i <= ; i++){
exgcd(mod1/a[i],a[i],x,y);
ans = (ans+x*(mod1/a[i])%mod*b[i])%mod1;
}
ans = (ans+mod1)%mod1;
ans = qp(q,ans);
printf("%lld\n", ans);
return ;
}

AcWing 213. 古代猪文 数学知识的更多相关文章

  1. bzoj 1951 [Sdoi2010]古代猪文 ——数学综合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...

  2. [SDOI2010]古代猪文 (欧拉,卢卡斯,中国剩余)

    [SDOI2010]古代猪文 \(solution:\) 这道题感觉综合性极强,用到了许多数论中的知识: 质因子,约数,组合数 欧拉定理 卢卡斯定理 中国剩余定理 首先我们读题,发现题目需要我们枚举k ...

  3. BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)

    数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...

  4. 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 ...

  5. 1951: [Sdoi2010]古代猪文

    1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2171  Solved: 904[Submit][Status] ...

  6. BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]

    1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2194  Solved: 919[Submit][Status] ...

  7. 古代猪文:数论大集合:欧拉定理,exgcd,china,逆元,Lucas定理应用

    /* 古代猪文:Lucas定理+中国剩余定理 999911658=2*3*4679*35617 Lucas定理:(m,n)=(sp,tp)(r,q) %p 中国剩余定理:x=sum{si*Mi*ti} ...

  8. 洛咕 P2480 [SDOI2010]古代猪文

    洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...

  9. BZOJ 1951 【SDOI2010】 古代猪文

    题目链接:古代猪文 好久没写博客了,这次就先写一篇吧…… 题面好鬼……概括起来就是:给出\(N,G(\leqslant 10^9)\),求:\[G^{\sum_{d|n}\binom{n}{d}} \ ...

随机推荐

  1. oracle 用EXISTS替代IN

    在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 低效: SELECT * FROM EMP ( ...

  2. oracle自动选择索引

    如果表中有两个以上(包括两个)索引,其中有一个唯一性索引,而其他是非唯一性. 在这种情况下,ORACLE将使用唯一性索引而完全忽略非唯一性索引. 举例: SELECT ENAME FROM EMP W ...

  3. 排他网关(ExclusiveGateWay)

    网关(ExclusiveGateWay) 作者:邓家海2018年3月11日 00:13:25 情景:某一家公司最近在给一个单位做一个财务审批的OA.具体需求是这样的:当部门申请的金额小于一万块的时候, ...

  4. jq杂项方法/工具方法----trim() html() val() text() attr()

    https://www.cnblogs.com/sandraryan/ $.trim() 函数用于去除字符串两端的空白字符.在中间的时候不会去掉. var str = ' 去除字符串左右两端的空格,换 ...

  5. HBuider快捷键

    朋友推荐用Hbuilder编辑器,看了下Hbuilder官网和那视频,感觉牛逼哄哄的, 自己也就体验了一下,打开Hbuilder的快捷键列表,每个快捷键都体验了一下,以下展示出来的,每一个都是精华,每 ...

  6. 前端开发之HTML

    前端 编程主要就是三部分:使用数据,存储数据和处理数据. 什么是前端: 前端就是使用数据的过程,通过规定的格式将服务端的数据在浏览器上更好的展示给用户. 前端的工具: HTML CSS 和 JavaS ...

  7. vue创建脚手架 cil

    1.检查环境是否安装好了!node -vnpm -vnpm install cnpm -g --registry=https://registry.npm.taobao.orgcpm -v (版本与n ...

  8. C# const 和 readonly 有什么区别

    在写常量的时候,是选择使用 const 还是 static readonly 是一个让人难以决定的问题,本文告诉大家这两个方法的区别 如果一个类有静态字段,会如何初始化 可以使用的方法有两个,第一个方 ...

  9. 【b804】双栈排序

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入 ...

  10. Java开发之快捷键

    1.显示桌面快捷键:win+D或者右击状态栏,选择显示桌面. 2.UE编辑器:如果想把多行记录合并为一行,使用替换(Ctrl+R),查找里输入^p(代表回车换行符),替换为里什么都不填,替换位置选择所 ...