AcWing 1298. 曹衝養豬(中國剩餘定理)
題目
自從曹衝搞定了大象以後,曹操就開始琢磨讓兒子幹些事業,於是派他到中原養豬場養豬,可是曹衝很不高興,於是在工作中馬馬虎虎,有一次曹操想知道母豬的數量,於是曹衝想狠狠耍曹操一把。
舉個例子,假如有 16 頭母豬,如果建了 3 個豬圈,剩下 1 頭豬就沒有地方安家了;如果建造了 5 個豬圈,但是仍然有 1 頭豬沒有地方去;如果建造了 7 個豬圈,還有 2 頭沒有地方去。
你作為曹總的私人祕書理所當然要將準確的豬數報給曹總,你該怎麼辦?
輸入格式
第一行包含一個整數 n,表示建立豬圈的次數;
接下來 n 行,每行兩個整數 ai bi ,表示建立了 ai 個豬圈,有 bi 頭豬沒有去處。
你可以假定 ai, aj 互質。
輸出格式
輸出僅包含一個正整數,即為曹衝至少養豬的數目。
資料範圍
1 < n <10
1 < b_i < a_i < 1100000
所有a_i的乘積不超過 10^18
輸入樣例:
3
3 1
5 1
7 2
輸出樣例:
16
題解
中國剩餘定理裸題,
對於x mod m1 = a1 , x mod m2 = a2 … x mod mn = an,
一 . 設M = m1 * m2 * … mn; m[i] = M / mi , 設 m[i] * t[i] mod mi = 1;
二 : x += a[i] * m[i] * t[i]; ( 1<= i <= n);
m[i]已知,M已知,那麼m[i] * ti mod mi = 1 用擴充套件歐幾裡求得滿足得ti;, 然後累加即可
最後記得ans % M,這樣才是最小的
對於這個題來說,mi * ti mod a[i] = 1,求得 ti .
int n;
ll a[MAXN],t[MAXN],b[MAXN];
ll M;
ll exgcd(ll a,ll b,ll &x,ll &y){
if(!b){
x = 1,y = 0;
return a;
}
ll d = exgcd(b,a%b,y,x);
y -= a/b * x;
return d;
}
int main(){
scanf("%d",&n);
M = 1;
for(int i=1;i<=n;i++){
scanf("%lld %lld",&a[i],&b[i]);
M *= a[i];
}
ll ans = 0;
for(int i=1;i<=n;i++){
ll mi = M / a[i];
ll ti,y;
exgcd(mi,a[i],ti,y);
ans += b[i]*mi*ti;
}
ans = (ans % M + M) % M;
printf("%lld\n",ans);
return 0;
}
相關文章
- 中國剩餘定理
- [待更新]中國剩餘定理
- 中國剩餘定理(構造)
- RSA遇上中國剩餘定理
- Lucas定理 & Catalan Number & 中國剩餘定理(CRT)
- 擴充套件中國剩餘定理套件
- 中國剩餘定理(個人筆記)筆記
- 擴充套件中國剩餘定理(EXCRT)學習筆記套件筆記
- 數論入門基礎(同餘定理/費馬小定理/擴充套件歐幾里德演算法/中國剩餘定理)套件演算法
- JavaScript 剩餘運算子JavaScript
- 將全景分割用到養豬場,AI養豬到底靠不靠譜?AI
- 英特爾“AI 養豬”AI
- RFID智慧化養豬企業說RFID裝置在豬養殖中的具體應用
- 1232: 手機剩餘電量
- 一起來養豬
- 剩餘引數、擴充運算子
- boot分割槽剩餘空間不足boot
- linux檢視剩餘磁碟空間Linux
- 文字相似度計算之餘弦定理
- 洛谷P1602_bfs+同餘定理
- ES6 - 函式與剩餘運算子函式
- ACwing1064. 小國王
- 合成類遊戲的廣告是怎麼回事 合成 養豬 養牛 養成遊戲
- 遊戲物品如何定價?談談遊戲中的消費者剩餘遊戲
- 旅行世界 羊駝萌萌噠 數字經營 養豬 養雞
- ES6箭頭函式的剩餘引數函式
- 前端-如何始終平均分配剩餘空間前端
- 大宇擬出售北軟剩餘股份及《仙劍》IP
- BZOJ5118: Fib數列2(二次剩餘)
- 剩餘運算子與展開運算子的區別
- 訪《中國軟體網》總裁曹開彬
- 獲取波場(Tron)錢包TRX、USDT餘額和剩餘頻寬、能量 - 筆記筆記
- oracle 剩餘表空間查詢慢,解決辦法Oracle
- 二次剩餘Cipolla演算法學習筆記演算法筆記
- 報告!這群阿里工程師在偷偷養豬阿里工程師
- 美國地圖中的四色定理地圖
- 養豬大戶必備!教你用ModelBox開發一個AI數豬應用AI
- 怎麼檢視微信收藏功能的剩餘可用空間