数学的东西(BZOJ1951)
#include <cstdio>
#define LL long long LL finmo=;
LL fac[][],inv[][];
LL tmp[],rev[];
LL n,g,x,y;
const LL mo[]={,,,}; LL qpow(LL bas,LL pow,LL mo){
LL ret=;
for (;pow;bas*=bas,bas%=mo,pow=pow>>){
if (pow&) ret*=bas,ret%=mo;
}
return(ret);
}//快速幂 LL C(LL t1,LL t2,LL mopo){
if (t2>t1) return();
return((fac[mopo][t1]*inv[mopo][t2])%mo[mopo]*inv[mopo][t1-t2]%mo[mopo]);
}//组合数 LL lucas(int t1,int t2,int mopo){
LL ret=;
while(t1||t2){
ret*=C(t1%mo[mopo],t2%mo[mopo],mopo);ret%=mo[mopo];
t1/=mo[mopo];t2/=mo[mopo];
}
return(ret);
}//lucas定理 LL solve(LL num){
for (int i=;i<=;i++) tmp[i]=lucas(n,num,i);
LL ret=;
for (int i=;i<=;i++)
ret+=tmp[i]*(finmo/mo[i])*rev[i],ret%=finmo-;
return(ret);
}//线性同余方程的解 void exgcd(LL a,LL b,LL &x,LL &y){
if (b==){
x=1LL;y=0LL;return;
}
exgcd(b,a%b,x,y);
LL t=x;x=y;y=t-(a/b)*y;
}//扩展欧几里得 int main(){
scanf("%lld%lld",&n,&g);
for (int i=;i<=;i++){
fac[i][]=;inv[i][]=;
for (int j=;j<mo[i];j++) {fac[i][j]=(fac[i][j-]*j)%mo[i];inv[i][j]=qpow(fac[i][j],mo[i]-,mo[i]);}
}
for (int i=;i<=;i++){
exgcd(finmo/mo[i],mo[i],x,y);
rev[i]=(x%mo[i]+mo[i])%mo[i];
} LL ans=;
for (int i=;i*i<=n;i++)
if (n%i==){
ans+=solve(i);ans%=finmo-;
if (n/i!=i) ans+=solve(n/i),ans%=finmo-;
} LL finans=qpow(g,ans,finmo);
if (g==)printf("0\n");else printf("%lld\n",finans);
}
数学的东西(BZOJ1951)的更多相关文章
- JavaScript中的运动数学函数(持续更新)
经常需要实现JS的动画效果,就会用到如下的一些数学的东西. 二次方运动,从0开始加速: var f=function(t,orgvalue,changevalue,runtime){ var t=t/ ...
- 校际联合Contest
每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...
- You and Your Research(Chinese)
转自:http://lyxh-2003.iteye.com/blog/434014 这是大科学家Richard Hamming的著名讲演,于1986年在贝尔通讯研究中心给200多名Bellcore的科 ...
- 那些年我们学过的PHP黑魔法
那些年我们学过的PHP黑魔法 提交 我的评论 加载中 已评论 那些年我们学过的PHP黑魔法 2015-04-10 Sco4x0 红客联盟 红客联盟 红客联盟 微信号 cnhonker_huc 功能介绍 ...
- 【VB超简单入门】一、写在前面
每本书的前面总得写点什么,到我这里也自然不能免俗,前言这东西“存在即合理”,所以就随便写一点咯~ 首先这本书是给从未接触过编程的童鞋准备的,由于我学识疏浅,对VB也只是一知半解所以也只能讲一点点最基础 ...
- ACM比赛经验
这篇博客是转别人的,觉得很好,希望能在以后的现场赛中用上:ACM比赛经验 推荐此篇文章打印,与模板放在一起. 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果, ...
- 对cost函数的概率解释
Likehood函数即似然函数,是概率统计中经常用到的一种函数,其原理网上很容易找到,这里就不讲了.这篇博文主要讲解Likelihood对回归模型的Probabilistic interpretati ...
- 从对偶问题到KKT条件
转自:http://xuehy.github.io/%E4%BC%98%E5%8C%96/2014/04/13/KKT/ 从对偶问题到KKT条件 Apr 13, 2014 对偶问题(Duality) ...
- You and your research
英文版http://www.cs.virginia.edu/~robins/YouAndYourResearch.html 视频版http://www.youtube.com/watch?v=a1zD ...
随机推荐
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块
config.xml文件的配置如下: <widget left="10" top="50" config="widgets/Navigation ...
- 用MSF进行提权
在WEB渗透中当我们拿到webshell了,我们可以试试用MSF(metasploit)来进行提权,在MSF里meterpreter很强大的! 我们先用msfvenom生成一个EXE的木马后门. ms ...
- 关于在SharePoint 2013(2010)中Javascript如何实现批量批准的自定义操作功能?
1.概述: SharePoint 2013(包括SharePoint 2010)提供了很方便的,多选的界面,但是很多操作还是不能批量进行,比如:批准的功能.如果您要解决方案不关心代码,那么请直接联系作 ...
- eclipse启动时报错 Could not create the java virtual machine
eclipse启动的时候 报错 这是系统为eclipse分配的内存不足,需要去修改 eclipse.ini文件 eclipse.ini是eclipse 内存分配之类的配置文件 对java虚拟机的 ...
- (一)Maven初步了解与认识
Apache Maven是一个软件项目管理的综合工具.基于项目对象模型(POM)的概念,提供了帮助管理构建.文档.报告.依赖.发布等方法,Maven简化和标准化项目建设过程.处理编译,分配,文档,团队 ...
- Nagios学习实践系列——基本安装篇
开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列——产品介绍篇 实验环境 操作系统:Red Hat Ente ...
- 使用强大的可视化工具redislive来监控我们的redis,别让自己死的太惨~~~
作为玩windows的码农,在centos上面装点东西,真的会崩溃的要死,,,我想大家也知道,在centos上面,你下载的是各种源代码,需要自己编译...而 使用yum的话,这个吊软件包有点想nuge ...
- Mysql 安装-windows X64
1.首先下载mysql文件包 2.将下载到的mysql-5.6.24-x64.zip进行解压. 3.安装,直接下一步. 4.进入文件夹内复制my-default.ini文件,并重命名为my.ini 5 ...
- android break 与 return 的区别
break 的含义是中断,return 的含义是结束整个方法的执行. 区别. public static void main(String agrs[]){ int i; for(i=0;i<1 ...
- ELF Format 笔记(十五)—— 符号哈希表
ilocker:关注 Android 安全(新手) QQ: 2597294287 符号哈希表用于支援符号表的访问,能够提高符号搜索速度. 下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范. ...