传送门

题目描述:

给定整数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. codeforces1238-div2

    C 目前在h的高度,1~h每一个台阶要么处于out的状态,要么处于in的状态,问最少改变几个台阶的状态,使得能够从h的高度到0. 下降的唯一的方式,拉动lever,h-1的状态取反,下落的最大的高度不 ...

  2. git之本地仓库关联远程仓库

    首先新建一个github respository 然后在自己本地新建一个maven项目,里面写点东西 如下图,将自己的项目所在地设置为本地git仓库 将本地仓库与远程关联,首先获取远程仓库的地址,点击 ...

  3. hdu 2126 Buy the souvenirs(记录总方案数的01背包)

    Buy the souvenirs Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. 版本号/缓存刷新 laravel mix函数

    很多开发者会给编译的前端资源添加时间戳或者唯一令牌后缀以强制浏览器加载最新版本而不是代码的缓存副本.Mix 可以使用 version 方法为你处理这种场景. version 方法会自动附加唯一哈希到已 ...

  5. jq实现鼠标悬停高亮当前图片

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. solaris 10 基本使用

    1. 新增用户 注释掉home行# cat /etc/auto_master # # Copyright 2003 Sun Microsystems, Inc. All rights reserved ...

  7. 2018-8-10-WPF-可获得焦点属性

    title author date CreateTime categories WPF 可获得焦点属性 lindexi 2018-08-10 19:16:53 +0800 2018-05-15 15: ...

  8. H3C ACL的标识

  9. H3C 静态默认路由配置

  10. vue 父组件中调用子组件函数

    2019/06/06 在父组件中调用子组件的方法:  1.给子组件定义一个ref属性.eg:ref="childItem"  2.在子组件的methods中声明一个函数.eg: u ...