擴充套件lucas學習筆記
胡思亂想
最後的沉淪??
用處
求 的結果,不保證 為質數
水法
將
分解質因數,可以知道
如果我們能知道
就可以同餘方程組合並了
於是現在你要求的就是
如果我們能知道
,
,
顯然能通過逆元得到答案
舉例一個
可以把他分組得到
前面不包含pi的因子
後面又是一個階乘可以遞迴計算
第一部分發現他們關於
分組同餘
最後剩下一部分暴力算
複雜度上界是
然後就到最後求逆元的時候了
發現其實他們是不互質的,因為存在因子
把三個階乘中因子
全部去掉,因為是除法可以直接減掉最後再乘
然後求逆元即可
板子
bzoj2142
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<ctime>
#include<map>
#include<bitset>
#define LL long long
#define mp(x,y) make_pair(x,y)
using namespace std;
inline int read()
{
int f=1,x=0;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline void write(int x)
{
if(!x){putchar('0');return ;}
static int sta[20],top=0;
while(x)sta[++top]=x%10,x/=10;
while(top)putchar(sta[top--]+'0');
}
inline void pr1(int x){write(x);putchar(' ');}
inline void pr2(int x){write(x);putchar('\n');}
LL pow_mod(LL a,LL b,LL mod)
{
LL ret=1;
while(b)
{
if(b&1)ret=ret*a%mod;
a=a*a%mod;b>>=1;
}
return ret;
}
LL exgcd(LL a,LL b,LL &x,LL &y)
{
if(a==0)
{
x=0;y=1;
return b;
}
else
{
LL tx,ty;
LL d=exgcd(b%a,a,tx,ty);
x=ty-(b/a)*tx;
y=tx;
return d;
}
}
LL inv(LL A,LL mod)
{
LL x,y,K=1;
LL d=exgcd(A,mod,x,y);
x=(x*(K/d)%(mod/d)+(mod/d))%(mod/d);
return x;
}
LL solve(LL n,LL pi,LL mod)//非互質 mod=pi^k
{
if(!n)return 1;
LL ret=1;
for(int i=2;i<=mod;i++)if(i%pi)ret=ret*i%mod;
ret=pow_mod(ret,n/mod,mod);
for(int i=2;i<=n%mod;i++)if(i%pi)ret=ret*i%mod;
return ret*solve(n/pi,pi,mod)%mod;//遞迴計算另外一個階乘pi^u*(1*2*3...)
}
LL exlucas(LL n,LL m,LL pi,LL mod)
{
if(m>n)return 0;
LL a=solve(n,pi,mod),b=solve(m,pi,mod),c=solve(n-m,pi,mod);
LL k=0;
for(LL i=n;i;i/=pi)k+=i/pi;
for(LL i=m;i;i/=pi)k-=i/pi;
for(LL i=n-m;i;i/=pi)k-=i/pi;
return a*inv(b,mod)%mod*inv(c,mod)%mod*pow_mod(pi,k,mod)%mod;
}
LL a1[100005],p1[100005],p2[100005],ln,P,n,m,temp;
LL query()
{
if(ln==1)return a1[1];
LL m1=p1[1],b1=a1[1],m2,b2;
for(int i=2;i<=ln;i++)
{
m2=p1[i];b2=a1[i];
LL A=m1,B=m2,K=b2-b1,x,y;
LL d=exgcd(A,B,x,y);
x=(x*(K/d)%(B/d)+(B/d))%(B/d);
b1=m1*x+b1;m1=m1/d*m2;
}
return b1;
}
LL work(LL n,LL m)
{
相關推薦
擴充套件lucas學習筆記
胡思亂想
最後的沉淪??
用處
求
C
n
m
Sping 原始碼深度解析——容器的功能擴充套件 【學習筆記】
我為什麼 看的不夠遠,因為高度不夠!
學習和整理總結Spring容器的功能擴充套件,本文為學習筆記,其中有一些內容是自己的思考總結!
一、兩種Spring中bean載入的方式
第一種
# 第一種使用 BeanFactory 以及它預設的實
擴充套件BSGS 學習筆記
首先你在學擴充套件BSGS前需要先了解BSGS。如果你還不瞭解BSGS或者對BSGS有什麼疑問,可以看看我的BSGS講解,我覺得基本是全網最詳細的了。
我們知道,BSGS可以解決求ax=b(modp)ax=b(modp)的最小非負整數xx,它的應用條件是要求底
中國剩餘定理與擴充套件 Lucas定理與擴充套件 學習筆記
中國剩餘定理
問題
求同餘方程組
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk){x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk
ES6學習筆記----陣列的擴充套件
1、Array.from 應用兩類:類似於陣列的物件和可遍歷的的物件(包含Map和Set),只有轉換成真正的陣列,才可使用陣列的方法。
類比:...擴充套件運算子也可以使某些物件變成陣列
2、Array.of 主要彌補陣列建構函式Array(
csdn學習筆記:lua擴充套件c程式 c/c++訪問lua變數和函式
aa.lua
teacher = "guilinwang";
org = "nzhsoft";
object = "lua";
age = 28;
tab = {
teacher = "guilinwang_tab",
org = "nzhsoft_tab",
[學習分享] R語言擴充套件包dplyr筆記 (轉載)
2014年剛到, 就在 Feedly 訂閱裡看到 RStudio Blog 介紹 dplyr 包已釋出 (Introducing dplyr), 此包將原本 plyr 包中的 ddply() 等函式進一步分
學習筆記 - 中國剩餘定理&擴充套件中國剩餘定理
中國剩餘定理&擴充套件中國剩餘定理
NOIP考完回機房填坑
◌ 中國剩餘定理
處理一類相較擴充套件中國剩餘定理更特殊的問題:
在這裡要求 對於任意i,j(i≠j),gcd(mi,mj)=1 (就是互素)
不互素的話就只能用擴充套件
Spring Cloud學習筆記25——自動擴充套件
垂直擴充套件
水平擴充套件
自我註冊和自我發現
服務登錄檔
客戶端
微服務例項
按需擴充套件
自動擴充套件的意義
好處:
提高了高可用性和容錯能力
增加了可伸縮性
具有最佳使用率,並節約成本
[學習筆記]擴展LUCAS定理
bool ref eight tps pro 質因子 calc sign 之一 可以先做這個題[SDOI2010]古代豬文
此算法和LUCAS定理沒有半毛錢關系。
【模板】擴展盧卡斯
不保證P是質數。
$C_n^m=\frac{n!}{m!(n-m)!}$麻煩
odoo10學習筆記二:繼承(擴充套件)、模組資料
一:繼承
在不改變底層物件的時候新增新的功能——這是通過繼承機制來實現的,作為在現有物件之上的修改層,這些修改可以發生在所有級別:模型,檢視和業務邏輯。不是直接修改現有模組,而是建立一個新模組以新增預期的修改。
1:擴充套件模型
Odoo 模型存在 Python 的模組之外, 在中間登錄檔那裡
學習筆記13--DOM擴充套件
Selector API
querySelector()
接受一個css選擇符,返回第一個匹配的元素
// 在整個文件範圍查詢
var divEl = document.querySelect
js學習筆記----JavaScript中DOM擴充套件的那些事
什麼都不說,先上總結的圖~
Selectors API(選擇符API)
querySelector()方法
接收一個css選擇符,返回與該模式匹配的第一個元素,如果沒有找到匹配的元素,返回null.
//取得 body 元素
var body = docume
ElasticSearch學習筆記之三十三 IK分詞器擴充套件字典及text全文型別資料分詞聚合查詢
ElasticSearch學習筆記之三十三 IK分詞器擴充套件字典及text全文型別資料分詞聚合查詢
專屬詞彙分詞失敗
擴充套件字典
檢視當前詞庫
自定義詞典
更新配置
再次檢視分詞
text全文型別資料分詞聚合
C#入門經典 學習筆記(九) 抽象類 密封類 靜態類 擴充套件方法
抽象類
抽象類是設計用來被繼承的。抽象類只能被用作其他類的基類。
不能建立抽象類的例項。
抽象類使用abstract修飾符宣告。
抽象類可以包含抽象成員或非抽象成員。抽象類的成員可以是抽
js-ES6學習筆記-函式的擴充套件
1、ES6函式引數的預設值,直接寫在引數定義的後面。引數變數是預設宣告的,所以不能用let或const再次宣告。
function Point(x = 0, y = 0) {
this.x = x;
this.y = y;
}
var p = new Point();
p //
Swift學習筆記-協議擴充套件
在Swift中進行面向物件程式設計時,儘量使用協議和泛型,而不是類繼承,因為過深的繼承層次很容易讓程式碼充滿難以理解的類。
協議擴充套件
前面我們介紹過了類的擴充套件,協議的擴充套件也是類似的,協議
Lucas定理學習筆記
Lucas定理:
(nm)≡(⌊np⌋⌊mp⌋)×(n%pm%p)mod  p{n\choose m}\equiv{\lfloor{\frac{n
Python資料結構與擴充套件庫(學習筆記)
慕課學習筆記
目錄
1. 字典
字典更新:
字典刪除:
案例:
2. 集合
1. 字典
字典建立物件之間的對映關係
字典無序,
11.Laravel5學習筆記:擴充套件 Validator 類
簡介
在 Laravel5 中,本身已經提供了豐富的驗證規則供我們使用,但是天下應用奇葩多,做為程式設計師你會發現永遠都有新的驗證規則誕生,光是組合已經拯救不了你的專案了。這個時候就需要我們擴充套件 Validator 類,來使之幫助專案繼續健康向前發展。