【第22期】观点:IT 行业加班,到底有没有价值?

小小的模线性方程(组)

原创 2015年11月20日 07:42:05

1).poj1006.生理周期

已知四个数 p, e, i, d,求一个数 a,满足 a % 23 = p,a % 28 = e,a % 33 = i,输出 a - d。特别地,a 不能超过 21252

因为 23,28,33 两两互质,所以这道题就是中国剩余定理。

#include <cstdio>

using namespace std;

typedef long long LL;

LL p, e, i, lcm, d;
int tot = 0;

void doit()
{
	++ tot;
	lcm = 21252;
	LL t = (5544 * p + 14421 * e + 1288 * i - d + lcm) % lcm;
	if (t == 0) t = 21252;
	printf("Case %d: the next triple peak occurs in %lld days.\n", tot, t);
}

int main()
{
	while (scanf("%lld%lld%lld%lld", &p, &e, &i, &d) != EOF){
		if (p == -1 && e == -1 && i == -1 && d == -1) break;
		doit();
	}
	return 0;
}

2).poj2891.Strange Way to Express Integers

x = ri (mod ai),求x 的最小非负整数值。

中国剩余定理?不能用啦!因为没有保证 ai 互质。换一种方法?

假设我们已经求出了前若干个方程的一个解 T,之前的方程中所有ai的最小公倍数为 lcm可以发现 T+k*lcm为常数)也是前若干个方程的解。加入当前方程后,问题转化为:找到一个 k,使 (T + k * lcm) mod ai = ri,也就是lcm * k ≡ ri - T (modai)。这又是一个一次线性同余方程的问题了。因此用 exgcd 解 N 次线性同余方程,就可以求出这个线性同余方程组的解。
#include <cstdio>

using namespace std;

typedef long long LL;

int n;
LL a1, a2, r1, r2, x, y, d;

void init()
{
	scanf("%I64d%I64d", &a1, &r1);
}

void ex_gcd(LL a, LL b, LL &d, LL &x, LL &y)
{
	if (!b){
		x = 1; y = 0; d = a;
		return;
	} else {
		ex_gcd(b, a % b, d, x, y);
		int t = x;
		x = y; y = t - a / b * x;
	}
}

void doit()
{
	bool flag = 1;
	for (int i = 2; i <= n; i ++){
		scanf("%I64d%I64d", &a2, &r2);
		LL a = a1, b = a2, c = r2 - r1;
		ex_gcd(a, b, d, x, y);
		
		if (c % d) flag = 0;
		
		LL t = b / d;
		x = (((x * c / d) % t) + t) % t;
		r1 = a1 * x + r1;
		a1 = a1 * a2 / d;
	}
	if(!flag) r1 = -1;
	printf("%I64d\n", r1);
}

int main()
{
	while(scanf("%d", &n) != EOF){
		init();
		doit();
	}
	return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

模线性方程组

//POJ2891 #include #include #include #include #include #include using namespace std ; typedef long l...

模式分类笔记 -- 统计学习(3)

计学习理论已经发展了几十年了,最近二十年的感觉是它的繁荣期。我在这一块耗费的时间也多了点,虽然只是草草入门了解,但亦觉得受益良多。   虽然提及统计学习理论的文章多会搭上神经网络的弱点,但是神经网络虽然存在理论上的梯度下降的固有缺陷,可应用起来的效果倒很不错的说。从一个方面来讲,统计学习在可行性的极限上与神经网络没啥区别,跟傅立叶变换这个基础关系很紧密。另外,统计学习理论对于小样本学习的情况比较关注,毕竟现实中样本经常是不够的,所以可以说它的理论成果比较坚实点。   反问题(由结果推原因)很多情况下是病态的,得到的结果跟样本

模线性方程组(中国剩余定理)

hiho – 1303 //解法和说明题面已经说的很清楚了. 下面就给出代码实现. /** @Cain*/ const int maxn=1e4+5; ll m[maxn],r[maxn]; int...

模线性方程----zoj_2305

    推论1:方程ax=b(mod n)对于未知量x有解,当且仅当gcd(a,n) | b。    推论2:方程ax=b(mod n)或者对模n有d个不同的解,其中d=gcd(a,n),或者无解。    定理1:设d=gcd(a,n),假定对整数x和y满足d=ax+by(比如用扩展Euclid算法求出的一组解)。如果d | b,则方程ax=b(modn)有一个解x0满足x0=x*(b/d) mod n 。特别的设e=x0+n,方程ax=b(mod n)的最小整数解x1=

模线性方程组

提示:模线性方程组 小Hi:一开始就直接求解多个方程不是太容易,我们从n=2开始递推: 已知: x mod m[1] = r[1] x mod m[2] = r[2] ...

从“模线性方程”到“中国剩余定理”

     中国余数定理 即最开始《孙子算经》的“物不知数”问题,到秦九韶《数书九章》有了系统答案。而西方19世纪高斯《算术探究》才有一次同余式解法。据说还有“韩信点兵”的故事:   韩信在点兵的时候,为了保住军事机密,不让 敌人知道自己部队的实力,先令士兵从1至3报数,然后记下最后一个士兵所报之数;再令士兵从1至5报数,也记下最后一个士兵所报之数;最后令士兵从1至7 报数,又记下最后一个士兵所报之数;这样,他很快就算出了自己部队士兵的总人数,而敌人则始终无法弄清他的部队究竟有多少名士兵。      西方人文献中都称“中国剩余定理”(Chinese Remainder

中国剩余定理(CRT):求解模线性方程组

中国剩余定理CRT 平生写过的最浮夸的博客。。

【模线性方程】POJ 2115 【更新日期2011-11-18】

[url]http://poj.org/problem?id=2115[/url] [size=medium]题意:转化成c * x = b - a mod (2 ^ k),解这个模线性方程的最小正整数解即可 [color=blue]Sample Input 3 3 2 16 3 7 2 16 7 3 2 16 3 4 2 16 0 0 0 0 Sample Output 0 2 32766 FOREVER[/color] 解方程:ax == b (mod n);【ax % n == b % n】 设线性模方程的一个解为x0 条件①:有d = gc

模线性方程组-非互质中国剩余定理 (更新于2012/5/18)

[size=x-large]KIDx 的解题报告 [b]该专题必备知识:解模线性方程[/b] [url]http://972169909-qq-com.iteye.com/blog/1104538[/url] [color=blue][b]以下原创 转载请指明作者 (KIDx) 以及 文章地址: [/b] [url]http://972169909-qq-com.iteye.com/blog/1266328[/url][/color] [/size] [img]http://dl.iteye.com/upload/attachment/591162/ee09991f-0311-3

模线性方程组

韩信点兵 问题:给定了n组除数m[i]和余数r[i],通过这n组(m[i],r[i])求解一个x,使得x mod m[i] = r[i] 解:   一开始就直接求解多个方程组的解,比较困难,所以...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)