AcWing 213. 古代猪文 数学知识
题目描述:
给定整数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. 古代猪文 数学知识的更多相关文章
- bzoj 1951 [Sdoi2010]古代猪文 ——数学综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...
- [SDOI2010]古代猪文 (欧拉,卢卡斯,中国剩余)
[SDOI2010]古代猪文 \(solution:\) 这道题感觉综合性极强,用到了许多数论中的知识: 质因子,约数,组合数 欧拉定理 卢卡斯定理 中国剩余定理 首先我们读题,发现题目需要我们枚举k ...
- BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)
数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...
- 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 ...
- 1951: [Sdoi2010]古代猪文
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2171 Solved: 904[Submit][Status] ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- 古代猪文:数论大集合:欧拉定理,exgcd,china,逆元,Lucas定理应用
/* 古代猪文:Lucas定理+中国剩余定理 999911658=2*3*4679*35617 Lucas定理:(m,n)=(sp,tp)(r,q) %p 中国剩余定理:x=sum{si*Mi*ti} ...
- 洛咕 P2480 [SDOI2010]古代猪文
洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...
- BZOJ 1951 【SDOI2010】 古代猪文
题目链接:古代猪文 好久没写博客了,这次就先写一篇吧…… 题面好鬼……概括起来就是:给出\(N,G(\leqslant 10^9)\),求:\[G^{\sum_{d|n}\binom{n}{d}} \ ...
随机推荐
- H3C TCP连接的建立
- Java语法格式
任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了. 代码都定义在类中,类由class来定义,区分 public class 和 class; 代码严格区分大小 ...
- Python--day28--摘要算法
摘要算法:
- codeforces 609C
#include<bits/stdc++.h> using namespace std; ],c[]; int main() { int n,i; while(cin >> n ...
- java抽象类的体现-模板模式
抽象类是多个具体子类抽象出来的父类,具有高层次的抽象性;以该抽象类作为子类的模板可以避免子类设计的随意性; 抽象类的体现主要就是模板模式设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行拓展 ...
- nginx服务器究竟是怎么执行php项目
https://jingyan.baidu.com/article/4f34706e3af779e387b56dc7.html CGI全称是“公共网关接口”(Common Gateway Interf ...
- js(一) 三大事件 实现注册验证
ps:小声比比,为什么一周多没更,因为js真的好难啊. 上一周做了一整周的jsp+sevlet+mysql做了一个MVC模式的最基本的新闻系统源码会有空搞出来的 好累 好多的. 三大事件 (鼠标事件. ...
- Vue 项目构建完成 ----发布项目
发布项目 cmd 命令行 npm run build 执行打包文件 完成后就会有 3 个文件夹 分别是: 文件夹 :build config dist in ...
- Js 时间戳显示和计算时间间隔
显示时间戳 很多地方会让页面显示当前时间并实时计时功能,例:2019年5月23号 10:28::34 代码实现如下: getTime(){ var mydate = new Date(); var y ...
- P1020 从大到小排序
题目描述 给你n个整数,请你按照从大到小的顺序输出它们. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 10^3)\) ,用于表示元素的个数. 输入的第二行包含 \(n\) 个整 ...