【题目链接】

https://www.lydsy.com/JudgeOnline/problem.php?id=1951

【算法】

欧拉定理+中国剩余定理 + lucas定理

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXD 40000
typedef long long ll;
const ll P = ;
const ll m[] = {,,,}; ll i,j,n,q,cnt,ans,x;
ll a[],factor[];
ll fac[MAXD+][]; inline void exgcd(ll a,ll b,ll &x,ll &y)
{
if (b == )
{
x = ;
y = ;
} else
{
exgcd(b,a%b,y,x);
y -= a / b * x;
}
}
inline ll CRT()
{
int i;
ll res = ,M,T,x;
for (i = ; i < ; i++)
{
M = (P - ) / m[i];
exgcd(M,m[i],T,x);
T = (T % m[i] + m[i]) % m[i];
res = (res + (a[i] * M % (P - ) * T % (P - )) % (P - )) % (P - );
}
return res;
}
inline ll power(ll a,ll n,ll p)
{
ll b = a,res = ;
while (n)
{
if (n & ) res = res * b % p;
b = b * b % p;
n >>= ;
}
return res;
}
inline void init()
{
int i,j;
for (i = ; i < ; i++) fac[][i] = ;
for (i = ; i <= MAXD; i++)
{
for (j = ; j < ; j++)
{
fac[i][j] = fac[i-][j] * i % m[j];
}
}
}
inline ll C(ll x,ll y,ll p)
{
if (x < y) return ;
if (y == ) return ;
return fac[x][p] * power(fac[y][p]*fac[x-y][p]%m[p],m[p]-,m[p]) % m[p];
}
inline ll lucas(ll x,ll y,ll p)
{
if (y == ) return ;
else return lucas(x/m[p],y/m[p],p) * C(x%m[p],y%m[p],p) % m[p];
}
int main()
{ scanf("%lld%lld",&n,&q);
if (q == P)
{
printf("0\n");
return ;
}
cnt = ;
for (i = ; i <= sqrt(n); i++)
{
if (n % i == )
{
factor[++cnt] = i;
if (i * i != n) factor[++cnt] = n / i;
}
}
init();
for (i = ; i <= cnt; i++)
{
for (j = ; j < ; j++)
{
a[j] = lucas(n,factor[i],j);
}
x = (x + CRT()) % (P - );
}
ans = power(q,x,P);
printf("%lld\n",ans); return ; }

【SDOI 2010】 古代猪文的更多相关文章

  1. 【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  2. [ SDOI 2010 ] 古代猪文

    \(\\\) Description 一句话题意: 设 \(x=\sum_{d|n} C_n^d\),求 \(G^x\pmod {999911659}\) . 从原题面大段语文中其实不难推出所求. \ ...

  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. [SDOI2010]古代猪文 (欧拉,卢卡斯,中国剩余)

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

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

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

  10. BZOJ 1951 【SDOI2010】 古代猪文

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

随机推荐

  1. SQL Server对数据进行添加

    下面介绍一下SQL Server如何往数据库中加入数据. <!-- 添加主人信息 --> <form action="add_Admin.jsp" method= ...

  2. OpenWRT 常用软件安装

    root@Jack:/tmp/opkg-lists# opkg--help opkg:unrecognized option `--help' opkgmust have one sub-comman ...

  3. Luogu P1365 WJMZBMR打osu! / Easy

    概率期望专题首杀-- 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2-- 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创 ...

  4. vue中eventbus 多次触发的问题

    相比于react,vue是一个更上手很快的框架.所说简单易用,但在做Vue项目的过程中,就会发现,坑还是有的.组件之间传递数据是一个常见的需求,父子组件传递数据在官网有介绍,除了父子组件,一般地,任意 ...

  5. Js构造对象-添加方法的三种方式

    Js构造函数添加方法有多种方案,来看一个混合方式构造函数的例子:申明person构造函数,有两个属性,name,qq.在原型上添加方法showname.这是最常用的方法. <script> ...

  6. 【剑指Offer】5、用两个栈实现队列

      题目描述:   用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.   解题思路:   本题的基本意图是:用两个后入先出的栈来实现先入先出的队列.对于这个问题,我 ...

  7. Idea 类注释和方法注释

    类注释 先打开Settings > Editor > File and Code Templates Includes Includes File Header 再随机新建个类就有类注释 ...

  8. js中获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值 多维数组可以这么修 ...

  9. 44.mapping下的数据结构

    主要知识点 1.了解es核心的数据类型 2.了解es默认的mapping方式 3.查看mapping     1.核心的数据类型     string,text byte, short,integer ...

  10. vue实现双向绑定mvvm

    剖析Vue实现原理 - 如何实现双向绑定mvvm 本文能帮你做什么?1.了解vue的双向数据绑定原理以及核心代码模块2.缓解好奇心的同时了解如何实现双向绑定为了便于说明原理与实现,本文相关代码主要摘自 ...