好久没写什么数论,同余之类的东西了。

昨天第一次用了剩余定理解题,今天上百度搜了一下hdu中国剩余定理。于是就发现了这个题目。

题目的意思很简单。就是告诉你n个m[i],和n个a[i]。表示一个数对m[i]取模的值为a[i]。

乍一看以为这个题目可以用中国剩余定理,但是看仔细了吗?这里的mi并没有说是互素的哦。

肿么办?只能用安叔以前说的解同余方程的那种土方法了。

上代码:(我稍微改进了一下,根据题目的具体情况)。

#include <iostream>
#include <cstdio>
#define ll long long
#define maxn 10
using namespace std; ll c[maxn],m[maxn],n,am,ac,y0,z0,d;
bool ans; void exgcd(ll a,ll b,ll& d,ll& x,ll& y)
{
if (b==) { d=a,x=,y=; }
else { exgcd(b,a%b,d,y,x); y-=x*(a/b); }
} int main()
{
ll i,t,cas=;
scanf("%I64d",&t);
while (t--)
{
ans=true;
scanf("%I64d",&n);
for (i=; i<=n; i++) scanf("%I64d",&m[i]);
for (i=; i<=n; i++) scanf("%I64d",&c[i]);
am=m[];
ac=c[];
for (i=; i<=n; i++)
{
exgcd(am,m[i],d,y0,z0);
if ((ac-c[i])%d!=)
{
ans=false;
break;
}
y0=(c[i]-ac)/d*y0;
y0=((y0%(m[i]/d))+(m[i]/d))%(m[i]/d);
ac=am*y0+ac,am=am/d*m[i],ac=(ac%am+am)%am;
}
if (ac==) ac=am;//这里是题目说明了整数,不能为0哦。
printf("Case %I64d: ",++cas);
if (ans) printf("%I64d\n",ac);
else printf("-1\n");
}
return ;
}

HDU 3579——Hello Kiki的更多相关文章

  1. hdu 3579 Hello Kiki

    不互质的中国剩余定理…… 链接http://acm.hdu.edu.cn/showproblem.php?pid=3579 #include<iostream>#include<st ...

  2. hdu 3579 Hello Kiki (中国剩余定理)

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. hdu 3579 Hello Kiki 不互质的中国剩余定理

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

  4. HDU——3579 Hello Kiki

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. hdu 3579 Hello Kiki【中国剩余定理】(模数不要求互素)(模板题)

    <题目链接> 题目大意: 给你一些模数和余数,让你求出满足这些要求的最小的数的值. 解题分析: 中国剩余定理(模数不一定互质)模板题 #include<stdio.h> usi ...

  6. HDU 3579 Hello Kiki 中国剩余定理(合并方程

    题意: 给定方程 res % 14 = 5 res % 57 = 56 求res 中国剩余定理裸题 #include<stdio.h> #include<string.h> # ...

  7. 中国剩余定理 hdu 3579

    HDU 3579 Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  8. HDU——T 3579 Hello Kiki

    http://acm.hdu.edu.cn/showproblem.php?pid=3579 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  9. 【hdu 3579】Hello Kiki(数论--拓展欧几里德 求解同余方程组)

    题意:Kiki 有 X 个硬币,已知 N 组这样的信息:X%x=Ai , X/x=Mi (x未知).问满足这些条件的最小的硬币数,也就是最小的正整数 X. 解法:转化一下题意就是 拓展欧几里德求解同余 ...

随机推荐

  1. ASCII, UNICODE, UTF-8, 字符集理解

    字符编码的发展历史 一个字节:最初一个字节的标准是混乱的,出现过4位.6位.7位的一字节标准,最终由于历史原因和物理存储需求(8位是2的3次方,方便物理存储),所以采用了8位为一个字节的标准. ASC ...

  2. Zabbix学习之路(二)之添加主机监控及自定义item监控

    1.zabbix_get命令详解 安装zabbix-get命令 [root@linux-node1 ~]# yum install -y zabbix_get 参数说明: -s --host: 指定客 ...

  3. ELKStack入门篇(一)之ELK部署和使用

    一.ELKStack简介 1.ELK介绍 中文指南:https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details ELK Stack包 ...

  4. directive 指令一

    什么是Directive Directive将一段html,js封装在一起,形成一个可以复用的独立个体,具有特定的功能.angularjs中的指令通常是比较小的组件,它相当于是给我们提供了一些公共的自 ...

  5. Python单元测试--unittest(一)

    unittest模块是Python中自带的一个单元测试模块,我们可以用来做代码级的单元测试. 在unittest模块中,我们主要用到的有四个子模块,他们分别是: 1)TestCase:用来写编写逐条的 ...

  6. WebGL树形结构的模型渲染流程

    今天和大家分享的是webgl渲染树形结构的流程.用过threejs,babylonjs的同学都知道,一个大模型都是由n个子模型拼装而成的,那么如何依次渲染子模型,以及渲染每个子模型在原生webgl中的 ...

  7. TPO 02 - Early Cinema

    TPO 02 - Early Cinema NOTE: 主要意思(大概就是主谓宾)用粗体标出:重要的其它用斜体: []中的是大致意思,可能与原文有关也可能无关,但不会离题 目的为训练句子/段落总结能力 ...

  8. 【jpeg_Class 类】使用说明

    jpeg_Class类是针对图片操作类,可以获取图片属性.等比例缩略图片.裁切图片.图片上打印文字及打印水印等功能. 目录 原型 参数 返回 说明 Sub load(byVal path) path ...

  9. Spring Cloud(一):服务治理技术概览【Finchley 版】

    Spring Cloud(一):服务治理技术概览[Finchley 版]  发表于 2018-04-14 |  更新于 2018-05-07 |  Spring Cloud Netflix 是 Spr ...

  10. 4星|《财经》2018年第13期:年轻人大多从大三和大四起开始就从QQ向微信转移

    <财经>2018年第13期 总第530期 旬刊 本期主要话题是快递业,其他我感兴趣的重要话题还有:香港9价HPV疫苗断供风波:华盛顿邮报被贝佐斯收购后这几年的变化:北京二中朝阳学校的划片风 ...