【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文
Description
Input
Output
首先来理解一下题意:我们有一个数N,他有因数{p1,p2,p3..pcnt},求(G^
)%mod
%(mod-1))%mod
。#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> #define mo 999911659 typedef long long ll; using namespace std; int mod[]={,,,,}; ll w[],fac[][]; ll Qvod(ll x,ll k,ll mod)
{
ll ans=;
while(k!=)
{
if(k&)ans=ans*x%mod;
x=x*x%mod;
k>>=;
}
return ans;
} ll C(ll x,ll k,ll m)
{
if(x<k)return ;
return fac[m][x]*Qvod(fac[m][k]*fac[m][x-k],mod[m]-,mod[m])%mod[m];
} ll Lucas(ll x,ll k,int m)
{
if(x==)return ;
return Lucas(x/mod[m],k/mod[m],m)*C(k%mod[m],x%mod[m],m)%mod[m];
} ll x,y; void exgcd(ll n,ll m)
{
if(m==){x=,y=;return;}
exgcd(m,n%m);
ll t=x;x=y,y=t-n/m*y;
} ll solve()
{
ll ans=;
for(int i=;i<=;i++)
{
ll sb=(mo-)/mod[i];
exgcd(sb,mod[i]);
ans=(ans+x*sb*w[i])%(mo-);
}
if(ans<=mo-)ans+=(mo-);
return ans;
} int main()
{
for(int i=;i<=;i++)
{
fac[i][]=;
for(int j=;j<=mod[i];j++)
fac[i][j]=fac[i][j-]*j%mod[i];
}
int n,g;
scanf("%d%d",&n,&g);
if(g==mo){printf("");return ;}
g%=mo;
for(int i=;i<=sqrt(n);i++)
{
if(n%i==)
{
int tmp=n/i;
for(int j=;j<=;j++){
if(tmp!=i)w[j]=(w[j]+Lucas(tmp,n,j));
w[j]=(w[j]+Lucas(i,n,j))%mod[j];
}
}
}
printf("%lld",Qvod(g,solve(),mo));
return ;
}
【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文的更多相关文章
- 【线段树/数学/扩展欧几里得】 Bzoj 3913:奇数国
Description 在一片美丽的大陆上有100000个国家,记为1到100000.这里经济发达,有数不尽的账房,并且每个国家有一个银行.某大公司的领袖在这100000个银行开户时都存了3大洋,他惜 ...
- 【数学/扩展欧几里得/线性求逆元】[Sdoi2008]沙拉公主的困惑
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
- 洛谷P3951 小凯的疑惑 - 数学 /扩展欧几里得
传送门 题意:求出a和b不能通过线性组合(即n*a+m*b)得到的最大值: 思路:摘自洛谷: 不妨设 a<b 假设答案为 x 若 x≡m*a ( mod b )(1≤m≤b−1) (mod3)什 ...
- 【数学】【NOIp2012】同余方程 题解 以及 关于扩展欧几里得与同余方程
什么是GCD? GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可).在开头,我们先下几个定义: ①a|b表示a能整除b(a是b的约数) ②a mod b表示a-[a/b]b([a/b]在Pa ...
- [P1516]青蛙的约会 (扩展欧几里得/中国剩余定理?)
每日做智推~ 一看就是一道数学题. 再看是一道公约数的题目. 标签是中国孙子定理. 题解是扩展欧几里得 (笑) 一开始没看数据范围 只有50分 开一个longlong就可以了 #include< ...
- hdu2669-Romantic-(扩展欧几里得定理)
Romantic Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- poj1061-青蛙的约会-(贝祖定理+扩展欧几里得定理+同余定理)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions:132162 Accepted: 29199 Descripti ...
- gcd,扩展欧几里得,中国剩余定理
1.gcd: int gcd(int a,int b){ ?a:gcd(b,a%b); } 2.中国剩余定理: 题目:学生A依次给n个整数a[],学生B相应给n个正整数m[]且两两互素,老师提出问题: ...
- [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)
Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...
随机推荐
- contentProvider-联系人的CURD
1.联系人的查找 返回一个ArrayList<HashMap<String, String>>类型 //通过管理联系人的URI获取游标对象 Cursor cursor= ge ...
- sqlserver 测试sql语句执行时间
查看sql语句执行时间/测试sql语句性能 写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置S ...
- jQuery 自定义事件的学习笔记
jquery中提供了两种方法可以绑定自定义事件: bind()和one()而绑定的自定义事件的触发,必须得用jquery中的trigger()方法才能触发. 我们先来看on事件 代码如下 复制代码 ...
- java比.net优美的一个小地方
用了四年的.net,今年转做java,内心一直吐槽java的烦琐,今天发现了一个java值得我为之点赞的地方 java的枚举居然可以这么玩,废话不多,上demo package com.sunline ...
- (转)SQL按照日、周、月、年统计数据
写sql语句分别按日,星期,月,季度,年统计销售额 --按日 select sum(consume),day([date]) from consume_record where year([date] ...
- setTimeout、clearTimeout、setInterval,clearInterval ——小小计时器
先看下效果 话不多说上代码~ <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Typ ...
- WF4.0 基础篇 (十八) Flowchar
本节主要介绍WF4 中 Flowchart的使用 本文例子下载: http://files.cnblogs.com/foundation/FlowcharSample.rar 本文例子说明 Flowc ...
- Javascript中的函数
Javascript中的函数 1.什么是函数 函数是被命名的,独立的,完成特定功能的代码段.其可能给调用它的程序返回值,我们把这个代码段就称之为"函数". 被命名的:函数大部分都是 ...
- C++链式继承
继承,对于学习C++的每一个人来说,都不会陌生.在Qt的开发中,如果你需要对一个无边框的界面支持move操作,那么你就得通过继承重写虚函数来实现,这并不难,但如果我还需要对一个按钮支持 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...