原题链接 https://www.luogu.org/problemnew/show/P1495

这个题明显的中国剩余定理(孙子定理),如果有不懂孙子定理的点这个链接https://baike.baidu.com/item/%E5%AD%99%E5%AD%90%E5%AE%9A%E7%90%86/2841597?fr=aladdin

如果不想看那么一大堆的字母也可以听我简单说一下(大佬勿喷):

中国剩余定理是求一次同余方程组的,比如本题的输入样例可以写成如下同余方程组:

x≡1  (mod 3)

x≡1  (mod 5)

x≡2  (mod 7)

那么同时满足以上三个同余方程的最小解就是本题的答案。

先求mod的数3,5,7的最小公倍数gbs是3*5*7=105   并把最小公倍数gbs写成当前mod的数*其余mod的数的积    即105=3*(5*7)=3*35=5*(3*7)=5*21=7*(3*5)=7*15;

随后我们设辅助方程

35x≡1   (mod 3)   1式        这里35是除了3这个mod数,其余mod数的积,即5*7(也可以理解成最小公倍数gbs 105/3=35),还有余数一定要为1不要问为什么

21x≡1    ( mod 5 )     2式

15x≡1    (mod  7 )     3式

由1式得: x≡2   (mod 3)

由2式得: x≡1   (mod 5)

由3式得: x≡1   (mod 7)

那么此题的解x≡一开始由题意列出的第一个同余方程的余数*第一个辅助方程的余数*(最小公倍数gbs/当前mod数)+......+一直到最后一个同余方程

所以x≡1*2*35+1*1*21+2*1*15≡121≡16   (mod105)

现在给出AC代码

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
long long n,a[],b[],s=,k=,m=,gbs=; //a数组存放猪圈数,b数组存放余猪,注意long long
cin>>n; for(int i=;i<=n;i++)
cin>>a[i]>>b[i]; for(int i=;i<=n;i++) //因为猪圈互质,所以最小公倍数直接用每个猪圈数之积
gbs*=a[i]; for(int i=;i<=n;i++)
if((a[i]==&&b[i]==)) //一步特判,如果猪圈数为1且无余猪,则说明只有1头猪 别说推不出来
{cout<<"";return ;}
for(int i=;i<=n;i++)
{
long long j=,k=;
for(int v=;v<=n;v++)
if(v!=i) k*=a[v]; //k为除了当前mod数本身其他mod数的积
while((k*j)%a[i]!=) //暴力搜解,求出k*j≡1 (mod a【i】)的解
j++;
s=(s+b[i]*k*j)%gbs; //中国剩余定理公式,每步mod一下,防止内存爆炸
} cout<<s%gbs;
return ;
}

P1495 曹冲养猪的更多相关文章

  1. [洛谷P1495] 曹冲养猪 (中国剩余定理模板)

    中国剩余定理(朴素的)用来解线性同余方程组: x≡a[1] (mod m[1]) x≡a[2] (mod m[2]) ...... x≡a[n] (mod m[n]) 定义ms=m[1]*m[2]*. ...

  2. P1495 曹冲养猪(拓展欧几里得)

    题目描述 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把.举个例子,假如有 ...

  3. 洛谷 P1495 曹冲养猪

    这是一道标准的孙子定理的题,题意浅显,思路明确 然后我就交了整整16遍啊,欺负人啊,题解暴力就能过,我就TLE ..悲惨的提交记录 下面是题面 题目描述 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干 ...

  4. 洛谷——P1495 曹冲养猪

    题目描述 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把.举个例子,假如有 ...

  5. 【题解】洛谷P1495 曹冲养猪 (中国剩余定理)

    洛谷P1495:https://www.luogu.org/problemnew/show/P1495 思路 建立了a个猪圈 有b头猪没有去处 即x≡b(mod a) x即是ans 把所有的关系全部列 ...

  6. [Luogu P1495]曹冲养猪

    题目链接 中国剩余定理(孙子定理)的裸题.直接放代码. #include<iostream> #include<cstdio> #include<algorithm> ...

  7. luogu P1495 曹冲养猪(中国剩余定理)

    题意 题解 翻到了一个金句 就跟这句话说得一样,就是个裸题. 所以看模板呗. #include<iostream> #include<cstring> #include< ...

  8. vijosP1164 曹冲养猪

    vijosP1164 曹冲养猪 链接:https://vijos.org/p/1164 [思路] 数学. 如果x不能满足模公式则+gcd,gcd=a的积(a互质)使加上gcd后依然满足前面的模公式. ...

  9. Vijos 1164 曹冲养猪(中国剩余定理)

    P1164曹冲养猪 Accepted 标签:三国争霸[显示标签] 描写叙述 自从曹冲搞定了大象以后,曹操就開始捉摸让儿子干些事业,于是派他到中原养猪场养猪,但是曹冲满不高兴.于是在工作中马马虎虎,有一 ...

随机推荐

  1. 企业IT架构转型之道,阿里巴巴中台战略思想与架构实战

    前言: 晚上11点多闲来无事,打开QQ技术群,发现有关 '中心化与引擎化' 的话题,本着学习的心态向大佬咨询,大佬推荐一本书,我大概看了有四分之一的样子,对于我这种对架构迷茫的人来说,如鱼得水,于是特 ...

  2. Google 宣布在 4 月 1 日关闭站内搜索

    今春,Google 计划终止又一项产品,它就是“站内搜索”(Site Search)功能.这项产品主要出售给 web 出版商,让它们可以在自家网站内运用业内领先的搜索技术.虽然该公司并未公开宣布此事, ...

  3. JSON Web Token 入门教程

    原文地址:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html JSON Web Token(缩写 JWT)是目前最流 ...

  4. c++构造函数成员初始化中赋值和初始化列表两种方式的区别

    先总结下: 由于类成员初始化总在构造函数执行之前 1)从必要性: a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数 b. 成员是常量或引用:成员无法赋值,只能被初始化 ...

  5. Python-random模块-59

    random模块: 随机数模块 >>> import random #随机小数 >>> random.random() # 大于0且小于1之间的小数 0.76643 ...

  6. 常用ASCII码对照表

        

  7. Is-a

    在知识表示.面向对象程序设计与面向对象设计的领域里, is-a(英语:subsumption,包含架构)指的是类的父子继承关系, 例如类D是另一个类B的子类(类B是类D的父类). 换句话说,通常&qu ...

  8. 并发包学习之-atomic包

    一,模拟并发代码: 线程不安全的代码 //并发模拟代码 public class CountExample { //请求总数 public static int clientTotal = 5000; ...

  9. 弹性(flex)布局

    五大主流浏览器及其内核:谷歌浏览器:Google Chrome.内核是blink火狐浏览器:Mozilla Firefox.内核是Gecko:欧鹏浏览器:OPera.内核是blink苹果浏览器:Saf ...

  10. redis 运维手册

    redis cli命令 - milkty - 博客园https://www.cnblogs.com/kongzhongqijing/p/6867960.html Redis多个数据库 - EasonJ ...