【BZOJ】1951[Sdoi2010]古代猪文
【题意】给定G,N,求:
$$ans=G^{\sum_{i|n}\binom{n}{i}}\ \mod\ \ p$$
1<=N,G<=10^9,p=999911659。
【算法】欧拉定理+组合数取模(lucas)+中国剩余定理(CRT)
【题解】
先考虑简化幂运算,因为模数为素数,由欧拉定理可知G^k=G^(k%φ(p)) mod p,显然G^(k%φ(p)) mod p可以用快速幂求解
但是欧拉定理要求(G,p)=1,当G=p时不满足条件,可以特判答案为0或者用扩展欧拉定理(b%φ(p)+(b>=φ(p)?φ(p):0))。
故我们实际要求:
$$\sum_{i|n}\binom{n}{i}\ \mod\ \ (p-1)$$
因为p是素数,φ(p)=p-1=999911658=2*3*4679*35617。
因为p-1分解后无平方因子,所以直接用lucas分别对素模数计算后用中国剩余定理合并即可(若有则需要参考bzoj礼物的方法——扩展lucas)
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,MOD=;//999911658=2*3*4679*35617
const int p[]={,,,,};
ll a[],fac[][maxn],n,G;
ll power(ll x,ll k,ll p)
{
if(x==)return ;
ll ans=;//快速幂ans=1!
while(k>)
{
if(k&)ans=(ans*x)%p;//满足1时才累乘
x=(x*x)%p;
k>>=;
}
return ans;
}
ll C(ll n,ll m,ll k)
{
if(n<m)return ;
return fac[k][n]*power(fac[k][m],p[k]-,p[k])%p[k]*power(fac[k][n-m],p[k]-,p[k])%p[k];//n!/m!/(n-m)!
}
ll lucas(ll n,ll m,ll k)
{
if(n<m)return ;
if(n<p[k]&&m<p[k])return C(n,m,k);
return C(n%p[k],m%p[k],k)*lucas(n/p[k],m/p[k],k)%p[k];
}
int main()
{
scanf("%lld%lld",&n,&G);
if(G==MOD)
{
printf("");
return ;
}
for(int k=;k<=;k++)
{
fac[k][]=;
for(int i=;i<p[k];i++)fac[k][i]=fac[k][i-]*i%p[k];//随时记得取模
}
for(int i=;i*i<=n;i++)if(n%i==)
{
int j=n/i;
for(int k=;k<=;k++)
{
a[k]=(a[k]+lucas(n,i,k))%p[k];
if(i!=j)a[k]=(a[k]+lucas(n,j,k))%p[k];
}
}
ll M=MOD-;
ll ans=;
for(int k=;k<=;k++)ans=(ans+a[k]*M/p[k]*power(M/p[k],p[k]-,p[k]))%M;
printf("%lld",power(G,ans,MOD));
return ;
}
【BZOJ】1951[Sdoi2010]古代猪文的更多相关文章
- 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 ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- 【刷题】BZOJ 1951 [Sdoi2010]古代猪文
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...
- bzoj 1951 [Sdoi2010]古代猪文 ——数学综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...
- bzoj 1951: [Sdoi2010]古代猪文
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...
- BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)
题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...
- bzoj 1951: [Sdoi2010]古代猪文 【中国剩余定理+欧拉定理+组合数学+卢卡斯定理】
首先化简,题目要求的是 \[ G^{\sum_{i|n}C_{n}^{i}}\%p \] 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 \[ G^{\sum_{i|n}C_{n}^{i} ...
- BZOJ 1951 [SDOI2010]古代猪文 (组合数学+欧拉降幂+中国剩余定理)
题目大意:求$G^{\sum_{m|n} C_{n}^{m}}\;mod\;999911659\;$的值$(n,g<=10^{9})$ 并没有想到欧拉定理.. 999911659是一个质数,所以 ...
- BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas
欧拉定理不要忘记!! #include <bits/stdc++.h> #define N 100000 #define ll long long #define ull unsigned ...
随机推荐
- udp 局域网群聊
UDP: 无连接协议 udp协议发送数据,用的是数据报包的形式.(64KB以内) 发送端: 1.定义发送的datagramsocket对象,发送端可以不用定义端口 2.定义封装数据包datag ...
- php多维数组排序 3
本文实例讲述了php简单实现多维数组排序的方法.分享给大家供大家参考,具体如下: 之前在做一个功能的时候,必须要把数据放到二维数组里并且排序,然后上网找找解决思路, 这时候会用到array_multi ...
- PHP中类中成员及常量
类中成员概述 面向对象编程,是需要通过“对象”去做什么事情(以完成某种任务): 而: 对象总是来源于类: 所以: 面向对象的编程,一切都是从定义类开始: 类中成员分为3大类: 属性: 方法: 常量: ...
- JVM初识、调优
JVM是按照运行时数据的存储结构来划分内存结构的,JVM在运行java时,将他们划分成几种不同格式的数据,分别存储在不同的区域,这些数据统一称为运行时数据,运行时数据包括java程序本身的数据信息和J ...
- C# WebBrowser控件模拟登录
一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档 ...
- FZU2122_又见LKity
题目是说给你一个替换串和目标串.把一个长串中的所有的替换串替换为目标串而且不递归地替换. 很简单,直接做一次KMP然后直接替换. 注意替换后跳到替换串的尾部. 注意大小写的问题. #include & ...
- 树状数组模板(pascal) 洛谷P3374 【模板】树状数组1
题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...
- Ubuntu 10.04 配置TQ2440交叉编译环境
一.解压交叉编译开发工具包 EABI_4.3.3_EmbedSky_20100610.tar.bz2 $ sudo mkdir /opt/EmbedSky/ $ sudo cp -r /ho ...
- 创建 cachingConfiguration 的配置节处理程序时出错: 未能加载文件或
C:\Users\xxx\Documents\IISExpress\config\applicationhost.config 将这里面带的项目路径替换成你当前路径 {"创建 caching ...
- 【BZOJ1494】【NOI2007】生成树计数(动态规划,矩阵快速幂)
[BZOJ1494][NOI2007]生成树计数(动态规划,矩阵快速幂) 题面 Description 最近,小栋在无向连通图的生成树个数计算方面有了惊人的进展,他发现: ·n个结点的环的生成树个数为 ...