BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas
欧拉定理不要忘记!!
#include <bits/stdc++.h>
#define N 100000
#define ll long long
#define ull unsigned long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int array[10]={2,3,4679,35617};
ll mult(ll x,ll y,ll mod)
{
ll tmp=(long double)x/mod*y;
return ((ull)x*y-tmp*mod+mod)%mod;
}
ll qpow(ll base,ll k,ll mod)
{
ll tmp=1;
for(;k;k>>=1,base=mult(base,base,mod)) if(k&1) tmp=mult(tmp,base,mod);
return tmp;
}
struct Lucas
{
int mod;
int fac[N];
ll inv(ll x)
{
return qpow(fac[x],mod-2,mod);
}
void init(int p)
{
mod=p;
fac[0]=1;
for(int i=1;i<=mod;++i) fac[i]=(ll)fac[i-1]*i%mod; // inv[i]=qpow(fac[i],mod-2,mod);
}
ll C(int n,int m)
{
if(m==0) return 1;
if(n<m) return 0;
return (ll)(1ll*fac[n]*inv(m)%mod*inv(n-m)%mod)%mod;
}
ll solve(int n,int m)
{
if(m==0) return 1;
return (solve(n/mod,m/mod)*C(n%mod,m%mod))%mod;
}
}comb;
struct CRT
{
int n;
ll arr[N],brr[N];
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b)
{
x=1,y=0;
return a;
}
ll gcd=exgcd(b,a%b,x,y),tmp=x;
x=y,y=tmp-a/b*y;
return gcd;
}
ll ExCRT()
{
ll ans=arr[1],M=brr[1];
for(int i=2;i<=n;++i)
{
ll a=M,b=brr[i],c=arr[i]-ans,gcd,x,y;
gcd=exgcd(a,b,x,y),b=abs(b/gcd);
x=x*(c/gcd),x=(x%b+b)%b;
ans+=M*x;
M*=brr[i]/__gcd(brr[i],M);
ans=(ans%M+M)%M;
}
return ans;
}
}crt;
int main()
{
// setIO("input");
int i,j;
ll nn,gg,re,tmp,h;
scanf("%lld%lld",&nn,&gg);
if(gg%(999911659)==0)
{
printf("0\n");
return 0;
}
for(i=0;i<4;++i)
{
comb.init(array[i]),re=0,h=nn;
for(j=1;j*j<nn;++j)
{
if(nn%j==0)
{
re=(re+comb.solve((int)nn,j))%array[i];
re=(re+comb.solve((int)nn,nn/j))%array[i];
}
}
if(j*j==nn) re=(re+comb.solve((int)nn,j))%array[i];
crt.arr[i+1]=re;
crt.brr[i+1]=(ll)array[i];
}
crt.n=4;
tmp=crt.ExCRT();
printf("%lld\n",qpow(gg,tmp,999911659));
return 0;
}
BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas的更多相关文章
- 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]古代猪文 【中国剩余定理+欧拉定理+组合数学+卢卡斯定理】
首先化简,题目要求的是 \[ G^{\sum_{i|n}C_{n}^{i}}\%p \] 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 \[ G^{\sum_{i|n}C_{n}^{i} ...
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...
- BZOJ 1951 [SDOI2010]古代猪文 (组合数学+欧拉降幂+中国剩余定理)
题目大意:求$G^{\sum_{m|n} C_{n}^{m}}\;mod\;999911659\;$的值$(n,g<=10^{9})$ 并没有想到欧拉定理.. 999911659是一个质数,所以 ...
- 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\) 由费马小定理,可以先对次数化简,即求\( ...
随机推荐
- Treasure Island(两遍dfs)-- Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)
题意:https://codeforc.es/contest/1214/problem/D 给你一个n*m的图,每次可以往右或者往下走,问你使(1,1)不能到(n,m)最少要放多少 ‘ # ’ . 思 ...
- 使用iview ui库 [vue/no-parsing-error] Parsing error: x-invalid-end-tag报错
打开设置,搜索“vetur.validation.template”,设置完毕之后记得重启vscode 如果不行请使用下边方法 一. 问题日志 ✘ https://google.com/#q=vue% ...
- 技能节-AI人脸识别
我们收到技能节项目的通知是在两周之前,项目要求做个人脸评分系统. 两周时间写一个"人脸评分系统",好像时间比较紧了,还好我们完成了~这个项目是将摄像头捕获到的包含人脸的图像传输到百 ...
- CNN网络结点计算总结(1998)
图 来源:Gradient-Based Learning Applied to Document Recognition 参阅CSDN:https://blog.csdn.net/dcxhun3/ar ...
- 进阶Java编程(3)线程的同步与死锁
线程的同步与死锁 1,同步问题引出 在多线程的处理之中,可以利用Runnable描述多个线程操作的资源,而Thread描述每一个线程对象,对于当多个线程访问统一资源的时候如果处理不当就会产生数据的错误 ...
- windows server12 FTP 创建后常见问题
一:用administrator 关闭防火墙可以访问,但是开启后不能访问 今天在windows server 2008 R2上安装了FTP,安装过程如下,然后添加内置防火墙设置,设置后发现本地可以访问 ...
- 单元操作和仓储模式 repository+unitOfWork
仓储和工作单元模式是用来在数据访问层和业务逻辑层之间创建一个抽象层.应用这些模式,可以帮助用来隔离你的程序在数据存储变化. 在数据源层和业务层之间增加一个repository层进行协调,有如下作用:1 ...
- JS基础_运算符的优先级
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- CentOS 7.6 64位安装docker并设置开机启动
步骤如下 安装docker.docker-compose yum -y install docker-io docker-compose 启动docker service docker start 设 ...
- 在Mysql中使用索引
MySQL查询的优化是个老生常谈的问题,方法更是多种多样,其中最直接的就是创建索引. 这里通过一个简单的demo来实际用一下索引,看看索引在百万级别查询中速率的提升效果如何 所需数据可以从我前面的一篇 ...