【HDU】hdu 3579 (同余方程组,逐一合并大法)

算法学习之模线性同余方程组(中国剩余定理+求解同余方程组) poj1006+hdu3579 算法学习之模线性同余方程组(中国剩余定理+求解同余方程组) poj1006+hdu3579 中国剩余定理 中国剩余定理原文:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何? 解法:中国剩余定理描述的就是一元线性同余方程组(其中m1,m2,...,mn均互质)。 求解同余方程组 中国剩余定理就是在求解同余方程组,但是当除数两两不互质的情况。就不能用CRT的结论来解决。 还是这个方程组,现在取出其中两个方程: x≡a1(mod m1) x 阅读详情

 

Problem Description

One day I was shopping in the supermarket. There was a cashier counting coins seriously when a little kid running and singing "门前大桥下游过一群鸭,快来快来 数一数,二四六七八". And then the cashier put the counted coins back morosely and count again...
Hello Kiki is such a lovely girl that she loves doing counting in a different way. For example, when she is counting X coins, she count them N times. Each time she divide the coins into several same sized groups and write down the group size Mi and the number of the remaining coins Ai on her note.
One day Kiki's father found her note and he wanted to know how much coins Kiki was counting.

 

 

Input

The first line is T indicating the number of test cases.
Each case contains N on the first line, Mi(1 <= i <= N) on the second line, and corresponding Ai(1 <= i <= N) on the third line.
All numbers in the input and output are integers.
1 <= T <= 100, 1 <= N <= 6, 1 <= Mi <= 50, 0 <= Ai < Mi

 

 

Output

For each case output the least positive integer X which Kiki was counting in the sample output format. If there is no solution then output -1.

 

 

Sample Input


 

2 2 14 57 5 56 5 19 54 40 24 80 11 2 36 20 76

 

 

Sample Output


 

Case 1: 341 Case 2: 5996

这是一个同余方程组;对于同余方程组可以采用逐一合并大法来做;通过合并之后可以得到一个同余方程;可以通过欧几里德的拓展来解决;得到最后的答案,建议将逐一合并大法来存为模板;

 

代码如下:

 

#include<iostream>
using namespace std;
typedef long long ll;
ll ext_gcd(ll a, ll b,ll& x, ll&y)///欧几里得拓展
{
    if (b == 0) { x = 1; y = 0; return a; }
    ll d = ext_gcd(b, a % b, y, x);
    y = y - a / b * x;
    return d;
}
inline ll mod(ll a,ll b){ return a % b+( a % b > 0 ? 0 : b );}
///逐一合并大法 参数n为同余方程组的个数;
ll ext_crt(int n,int *a,int *m)///x=ai(mod mi)
{
    if(n==1&&a[0]==0) return m[0];
    ll ans=a[0],lcm=m[0];
    bool legal=true;
    for( int i = 1; i < n; i++)
    {
        ll x, y, gcd;
        gcd = ext_gcd(lcm,m[i],x,y);
        if((a[i]-ans)%gcd)///判断有无解;
            { legal = false;break;}
        ll tmp=lcm * mod((a[i]-ans)/gcd*x/**求解u m1 + v m2 = (a1 – a2)的解,(a[i]-ans)/gcd 是倍数*/,m[i]/gcd);///求解同余方程;
        lcm=lcm/gcd*m[i];///lcm 等于两个系数的最小公倍数;
        ans=mod(ans+tmp,lcm);
    }
    return legal?ans:-1;
}
int a[200],m[200];
int main()
{
    int t;
    cin>>t;
    for(int cas=1;cas<=t;cas++)
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++) cin>>m[i];
        for(int i=0;i<n;i++) cin>>a[i];
        cout<<"Case "<<cas<<": "<<ext_crt(n,a,m)<<endl;
    }
    return 0;
}

 

 

 

 

 

 

 

 

 

同余问题(3)一元线性同余方程组 线性同余方程问题: 一元线性同余方程组: ······ 问题:http://poj.org/problem?id=2891 pku 2891 Strange Way to Express Integers(线性同余方程) 大意:问题就是求解m,满足n个方程: 也即是 #include #include using namespace std; typedef l 阅读详情

相关推荐

解同余方程的详细讲解

讲解求解同余方程,一个不错的PDF,介绍一次同余方程及一次同余方程组的解的情况及具体求解的方法。

hdu - 3579 - Hello Kiki - (不互质的中国剩余定理)

One day I was shopping in the supermarket. There was a cashier counting coins seriously when a little kid running and singing "门前大桥下游过一群鸭,快来快来 数一数,二四六七八". And then the cashier put the counted coins ba

Orz 509

Cadence学习之路(六)元器件封装绘制

使用Allegro PCB Designer绘制元器件封装

qq_46757048的博客 1万+

【HDU - 3579】Hello Kiki(拓展中国剩余定理)

One day I was shopping in the supermarket. There was a cashier counting coins seriously when a little kid running and singing "门前大桥下游过一群鸭,快来快来 数一数,二四六七八". And then the cashier put the counted coins ba...

__似水流年__的博客 425

SpringBoot3项目实战:5分钟搞定Knife4j接口文档配置(含中文版设置)

本文详细介绍了在SpringBoot3项目中快速整合Knife4j接口文档工具的实战教程。内容涵盖核心依赖选择、基础配置、中文界面设置、API信息深度定制以及生产环境安全策略,帮助开发者高效构建专业、可交互的API文档门户,提升团队协作效率。

weixin_29204121的博客 256

CGNS快速入门到实战(二):VS配置调用CGNS静态链接库

CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:(一)CGNS静态链接库编译;(二)VS配置调用CGNS静态链接库;(三)CGNS文件及案例展示。本篇文章重点讲述VS配置调用CGNS静态链接库。

ahang_99的博客 2616

算法很美:同余方程组

同余方程组 解法 逐级合并: x≡a1(modm1) x≡a2(modm2) x≡a3(modm3) 求x 进行两两合并,得出两两合并后的通解, 对于前两个方程组 x=a1+k1m1 x=a2+k2m2 故消去x后得到 k1m1-k2m2=a2-a1 带入线性求解 可得到一个k1的特解 即: x0=a1+k1m1 则通解为 :x=x0+k[lcm(m1,m2)]; 即x≡x0[mod lcm(m1,m2)] 更新此时的a=x0和m=lcm(m1,m2);并与下一组方程继续两两合并 直到全部合并结束,

Zc9741的博客 673

C# 开发 ACS 运动控制系统:从入门到高阶应用实践

起始位置</param>/// <param name="endPos">结束位置</param>/// <param name="maxVelocity">最大速度</param>/// <param name="maxAcceleration">最大加速度</param>/// <param name="maxJerk">最大加加速度

品质生活,极致编程。 2841

线性同余方程组-中国剩余定理or合并方程

线性同余方程组即若干个线性同余方程的组合。求解方式可以参考我们普通的方程组,先解式1,将式1的通解带入式2后化简,再解式2,如此重复即可得满足所有式子的解。例如 以上适合笔算,但是在程序中表述一般解法,就需要用到等式合并或者中国剩余定理线性方程组解法与推理方法一,合并线性同余方程以下为推导,红色圈出部分为编码时所用的结论。...

渣渣 5883

【分子指纹】化学分子指纹的概念和应用(非常重要)

分子指纹(Molecular fingerprints)可以低计算成本的方式表示大规模化学数据集中化合物的化学(结构、物理化学等)性质。它们在将化学数据集中的分子转换为适合于计算方法的一致输入格式(bit向量或数值)方面发挥着重要作用。在这篇综述中,

DJJ5210的博客 1万+

瑞萨MCU定时器API实战:从Smart Configurator配置到中断与输入捕获应用

在嵌入式系统开发中,定时器(Timer)是实现精准时序控制、PWM输出和信号测量的核心硬件外设。其工作原理基于计数器在稳定时钟源驱动下递增或递减,达到预设值后触发中断或改变输出电平,从而为系统提供节拍和事件基准。通过图形化配置工具(如瑞萨的Smart Configurator),开发者可以高效地将复杂的硬件寄存器操作转化为清晰、标准化的C语言API函数,这极大地提升了开发效率并降低了出错风险。这种从硬件抽象到软件接口的技术价值在于,它使得开发者能更专注于应用逻辑,而非底层细节,尤其适用于工业控制、汽车电子等

weixin_42519733的博客 274

合并同余方程组

合并同余方程组: 可转换为: *+= (1) ...

贺州学院_ChenCheng 413

YOLO系列算法改进 | 自研篇 | C3k2融合Circulant Attention注意力模块 | 给局部特征提取器装上了全局动态卷积核,兼顾效率、精度与泛化能力!| AAAI 2026

YOLO系列算法改进 | 自研篇 | C3k2融合Circulant Attention注意力模块 | 给局部特征提取器装上了全局动态卷积核,兼顾效率、精度与泛化能力!| AAAI 2026 (以YOLO26最新目标检测模型为基础,融合C3k2_Circulant创新模块改进Backbone)

2502_91881744的博客 242

【hdu3579-Hello Kiki】拓展欧几里得-同余方程组

【hdu3579-Hello Kiki】拓展欧几里得-同余方程组 http://acm.hdu.edu.cn/showproblem.php?pid=3579 题解:同余方程组的裸题。注意输出是最小的正整数,不包括0。 #include&lt;cstdio&gt; #include&lt;cstdlib&gt; #includ...

qq_25768269的博客 130

自建 HTML获取腾讯六宫格点选图片验证码素材,实现刷新批量获取图片方便训练

通过自建 HTML 页面,可以方便地获取腾讯六宫格二维码素材,不仅过程简单,而且可以灵活配置各种参数。希望这篇文章能帮助到需要相关素材的小伙伴。如果你有其他问题或者更好的方法,欢迎留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 486

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDU3579 Hello Kiki 解同余方程组

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目大意:小kiki喜欢收集硬币,她把收集的硬币数目用如下方式描述:把硬币均分成mi份,余下ai个。现在小kiki的baba想知道小kiki收集了多少硬币,你能帮他计算出来么? 分析:典型的同余方程组X≡Mi(mod Ai)的求解。需要注意的是,题中Outpu

AC_Gibson的专栏 768

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Hdu 3579 Hello Kiki(同余模方程组)

题意:要求求解出H,其中H%Mi=Ai ; 其中i=1,2,,,,,N; 样例说明: T N M1,M2,,,,,Mn A1,A2,,,,,,An 其实该题是要求我们解这样一个方程组: 首先先介绍一下同于方程组的解发; 一:解二元一次非其次方程组 令方程组为: ax + by = c (1) 看到这式子我们首先要想到的就是欧几里得扩展原里,即若c为a与b的最大公

漩涡梦幻 1317

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

hdu 3579 Hello Kiki 同余

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题意:Kiki有x个硬币,用了m种方法分,每次记录基数和剩余量,他爸爸呢,想要知道他的小金库有多少钱,但不会算,让你算一下; 分析:很显然是一次同余方程组求解,但有一点,没有0解; 具体代码如下: #include #include #include #include #incl

北门的智慧 629

HDU3579中国剩余定理(不互质的情况)

hdu 3579 Hello Kiki 中国剩余定理(不互质的情况) 对互质的情况,处理起来比较方便,可以直接套模板 本题给出不互质的模线性方程组,求出满足方程的最小正整数解 方案:对于不互质的模线性方程组,可以进行方程组合并,求出合并后的方程的解,这样就可以很快地推出方程的最终解。 两个方程合并的一种方法: x = c1 (mod b1) x = c2(mod b2)  此时b1,

幸福在路上 7341

[数论] 同余方程组 (hdu 3579&hdu 1573)

同余方程组:http://blog.youkuaiyun.com/qq_36038511/article/details/76890167 同余方程:http://blog.youkuaiyun.com/qq_36038511/article/details/76887494以下是一些练习 hdu3579 Hello Kiki&hdu 1573 X问题

kkkGIGi_qtt 289

HDU-3579-Hello Kiki (利用拓展欧几里得求同余方程组)

设 ans 为满足前 n - 1个同余方程的解,lcm是前n - 1个同余方程模的最小公倍数,求前n个同余方程组的解的过程如下: ①设lcm * x + ans为前n个同余方程组的解,lcm * x + ans一定能满足前n - 1个同余方程; ②第 n 个同余方程可以转化为a[n] * y + b; 合并①②得:lcm * x + ans = a[n] * y + b; =&gt...

dda3323302的博客 152

HDU 3579 Hello Kiki 解同余方程组

点击打开链接 Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1824    Accepted Submission(s): 646 Problem Description

代码改变世界,keep coding。 1004

HDU 3579 模余方程

/* HDU 3579 不一定互质情况,神牛公式解析链接:http://yzmduncan.iteye.com/blog/1323599 把推导过程翻译成代码即可... */ #include #include #include using namespace std; typedef long long ll; ll gcd(ll a,ll b){     if(b==

好久不见 914
上一篇: 【POJ】poj 3304 (计算机图论_直线和线段相交)
下一篇: 【LightOJ】lightoj 1240 计算机图论(计算三维点到线段的距离)
三生石1103
博客等级 码龄12年 16粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值