首页 > 其他分享 >Luogu P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

Luogu P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

时间:2023-06-15 10:46:45浏览次数:46  
标签:曹冲 P1495 CRT Luogu long 猪圈 y1 include

【模板】中国剩余定理(CRT)/ 曹冲养猪

题目描述

自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有 \(16\) 头母猪,如果建了 \(3\) 个猪圈,剩下 \(1\) 头猪就没有地方安家了。如果建造了 \(5\) 个猪圈,但是仍然有 \(1\) 头猪没有地方去,然后如果建造了 \(7\) 个猪圈,还有 \(2\) 头没有地方去。你作为曹总的私人秘书理所当然要将准确的猪数报给曹总,你该怎么办?

输入格式

第一行包含一个整数 \(n\) —— 建立猪圈的次数,接下来 \(n\) 行,每行两个整数 \(a_i, b_i\),表示建立了 \(a_i\) 个猪圈,有 \(b_i\) 头猪没有去处。你可以假定 \(a_1 \sim a_n\) 互质。

输出格式

输出包含一个正整数,即为曹冲至少养母猪的数目。

样例 #1

样例输入 #1

3
3 1
5 1
7 2

样例输出 #1

16

提示

\(1 \leq n\le10\),\(0 \leq b_i\lt a_i\le100000\),\(1 \leq \prod a_i \leq 10^{18}\)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

long long a[5211314], b[5211314], n;

void Exgcd(long long a, long long b, long long &x, long long &y) {
	if (b == 0) {
		x = 1;
		y = 0;
		return;
	}
	long long x1, y1;
	Exgcd(b, a % b, x1, y1);
	x = y1;
	y = x1 - a / b * y1;
	return; 
}

long long CRT(long long m[], long long r[]) {
	long long M = 1, ans = 0;
	for (int i = 1; i <= n; ++ i) {
		M *= m[i];
	}
	for (int i = 1; i  <= n; ++ i) {
		long long c = M / m[i], x, y;
		Exgcd(c, m[i], x, y);
		ans = (ans + r[i] * c * x % M) % M;
	}
	return (ans + M) % M;
} 

int main() {
	scanf("%lld", &n);
	for (int i = 1; i <= n; ++ i) {
		scanf("%lld%lld", a + i, b + i);
	}
	printf("%lld\n", CRT(a, b));
	return 0;
}

标签:曹冲,P1495,CRT,Luogu,long,猪圈,y1,include
From: https://www.cnblogs.com/jueqingfeng/p/17482241.html

相关文章

  • luogu P7740 [NOI2021] 机器人游戏
    题面传送门一个bitset值52分?首先样例让你容斥你就容斥,枚举哪些位是可以的,计算每一位的\(p_0,p_1,q_0,q_1\)表示是否被要求最后是\(0/1\),是否有最终值是开始值异或\(0/1\)。然后每个位置的贡献可以分类讨论出来:如果\(p_0,p_1\)或者\(q_0,q_1\)都有,那只能空着。如......
  • Luogu P7118
    题面题意很清楚,就不复述了。不难发现,我们首先要求出场景数小于给定galgame的galgame数量,于是我们需要求出场景数\(=i\)的galgame数量,设为\(f_i\)。考虑根节点,当A场景大小为\(j\)时,B场景的大小为\(i-j-1\)。枚举每个\(j\),不难得到\(f_i=\sum\limits_{j=0}^{i-1......
  • Luogu P2580 于是他错误的点名开始了
    于是他错误的点名开始了题目背景XS中学化学竞赛组教练是一个酷爱炉石的人。他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900)。题目描述这之后校长任命你为特派探员,每天记录他的点......
  • Luogu P3435 [POI2006] OKR-Periods of Words
    [POI2006]OKR-PeriodsofWords题面翻译对于一个仅含小写字母的字符串\(a\),\(p\)为\(a\)的前缀且\(p\nea\),那么我们称\(p\)为\(a\)的proper前缀。规定字符串\(Q\)(可以是空串)表示\(a\)的周期,当且仅当\(Q\)是\(a\)的proper前缀且\(a\)是\(Q+Q\)的前缀......
  • Luogu P2375 [NOI2014] 动物园
    [NOI2014]动物园题目描述近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。某天,园长给动物们讲解KMP算法。园长:“对于一个字符串\(S\),它......
  • Luogu P4824 [USACO15FEB] Censoring S
    [USACO15FEB]CensoringS题面翻译FarmerJohn为他的奶牛们订阅了GoodHooveskeeping杂志,因此他们在谷仓等待挤奶期间,可以有足够的文章可供阅读。不幸的是,最新一期的文章包含一篇关于如何烹制完美牛排的不恰当的文章,FJ不愿让他的奶牛们看到这些内容。FJ已经根据杂志的所有文字,......
  • Luogu P3375 【模板】KMP字符串匹配
    【模板】KMP字符串匹配题目描述给出两个字符串\(s_1\)和\(s_2\),若\(s_1\)的区间\([l,r]\)子串与\(s_2\)完全相同,则称\(s_2\)在\(s_1\)中出现了,其出现位置为\(l\)。现在请你求出\(s_2\)在\(s_1\)中所有出现的位置。定义一个字符串\(s\)的border为\(s\)......
  • Luogu P3167 [CQOI2014]通配符匹配
    [CQOI2014]通配符匹配题目描述几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户。最常见的通配符有两个,一个是星号(”“'),可以匹配0个及以上的任意字符:另一个是问号(”?“),可以匹配恰好一个任意字符。现在需要你编写一个程序,对于给定的文件名列表和一个包......
  • Luogu P4591 [TJOI2018]碱基序列
    [TJOI2018]碱基序列题目描述小豆参加了生物实验室。在实验室里,他主要研究蛋白质。他现在研究的蛋白质是由\(k\)个氨基酸按一定顺序构成的。每一个氨基酸都可能有\(a\)种碱基序列\(s_{i,j}\)构成。现在小豆有一个碱基串\(s\),小豆想知道在这个碱基上都多少中不同的组合方式可能得......
  • Luogu P4159 [SCOI2009] 迷路
    [SCOI2009]迷路题目背景windy在有向图中迷路了。题目描述该有向图有\(n\)个节点,节点从\(1\)至\(n\)编号,windy从节点\(1\)出发,他必须恰好在\(t\)时刻到达节点\(n\)。现在给出该有向图,你能告诉windy总共有多少种不同的路径吗?答案对\(2009\)取模。注意:windy......