【BZOJ 1951】 [Sdoi2010]古代猪文
Description
Input
Output
Sample Input
Sample Output
HINT
10%的数据中,1 <= N <= 50;
20%的数据中,1 <= N <= 1000;
40%的数据中,1 <= N <= 100000;
100%的数据中,1 <= G <= 1000000000,1 <= N <= 1000000000。

#include<cstdio>
#define ll long long
const int P=;
int t[]={,,,};
int fac[][],M[],G,N;
int pow(ll a,ll b,ll x){
ll ans=;
while (b>){
if (b&==) ans=(ans*a)%x;
b=b>>;a=(a*a)%x;
}
return ans;
} int C(int a,int b,int x){
if (b>a) return ;
return fac[x][a]*pow(fac[x][a-b]*fac[x][b],t[x]-,t[x])%t[x];
} int lucas(int a,int b,int x){
if(!b) return ;
return C(a%t[x],b%t[x],x)*lucas(a/t[x],b/t[x],x)%t[x];
} void exgcd(int a,int b,ll &x,ll &y){
if (b==){x=,y=;return;}
exgcd(b,a%b,x,y);
int t=x;x=y,y=t-(a/b)*y;
} ll CRT()
{
ll N=;
ll i,d,x0,y0,ans=;
for(i=;i<;i++)
N*=t[i];
for(i=;i<;i++)
{
d=N/t[i];
exgcd(d,t[i],x0,y0);
ans=(ans+d*x0*M[i])%N;
}
while(ans<= )
ans+=N;
return ans;
}
int main(){
scanf("%d%d",&N,&G);
if (G==P) {
printf("");
return ;
}
G%=P;
for (int i=;i<;i++){//这里求阶乘
fac[i][]=;
for (int j=;j<=t[i];j++) fac[i][j]=(fac[i][j-]*j)%t[i];
}
for (int i=;i*i<=N;i++){
if(N%i==){
int tmp=N/i;
for (int j=;j<;j++){
if (tmp!=i) M[j]=(M[j]+lucas(N,i,j))%t[j];
M[j]=(M[j]+lucas(N,tmp,j))%t[j];
}
}
}
printf("%d",pow(G,CRT(),P));
}
【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 ...
随机推荐
- 关于64位Linux编译hadoop2
Apache官方提供hadoop2的安装包是在32位机器下编译的,生产环境一般使用64的Linux,那么需要在64位机器下重新编译可以查看hadoop-2.2.0-src下的BUILDING.txtB ...
- hdu 4000 树状数组
思路:找出所有 a<b<c||a<c<b的情况,在找出所有的a<b<c的情况.他们相减剩下就是a<c<b的情况了. #include<iostre ...
- 转:Nginx RTMP 功能研究
看点: 1. Nginx 配置信息与使用. (支持 rtmp与HLS配置) 2. 有ffmpeg 编译与使用, 命令行方式来测试验证客户端使用. 转自:http://blog.cs ...
- JDBC之修改数据
文件分布图: 在MySQL中设置表格: Books: package com.caiduping.entity; public class Books { private int id; // 图书名 ...
- DOS批处理命令-几个固定名称的变量
批处理中有一些变量的变量名称是固定的,具有特定的意义,接下来,我们来看看这些有特定意义的变量到底有什么意义. 1.%CD% 当前路径的路径名[盘符 + 路径] - 現在のディレクトリ文字列に ...
- jquery 评论等级(很差,差,一般,好,很好)代码
可能标题没有说的太明白,这里先让大家看一下效果,以便让客官们了解小弟说的是什么... 看完效果后估计各位客官已经明白小弟说的是什么了吧,下面小弟就带大家看下代码 <style> .maxd ...
- (转)Tomcat内存设置
Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在 ...
- axure注册码
ahjesus Axure RP 7.0注册码 用户名:axureuser 序列号:8wFfIX7a8hHq6yAy6T8zCz5R0NBKeVxo9IKu+kgKh79FL6IyPD6lK7G6+t ...
- jQuery-ui treegird 使用
在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的editor类型,这时原有的例子就显的有点太过简单,不能实现我们的需求,现在应用我在项目中的操作为例,显示下实现同列 ...
- Oracle常见的问题
1.oracle 中文问号乱码解决方法: 在系统变量里面添加变量名:NLS_LANG 变量值: SIMPLIFIED CHINESE_CHINA.ZHS16GBK 2.查询oracle 里的主键 S ...