这道题目solution写了两种做法,都讲一下吧。
首先,令x=r^0.5,显然,如果x>2,则可以不断减2到小于二;如果x>1,那么变为2-x。因此此时必有x
题目等价于在数轴从0~n,以y长度为一个区间(左闭右开)黑白交替染色,求黑色部分覆盖的整点减去白色部分覆盖的整点。然后把最后面零散的部分暴力计算,如果最后一个是黑色的也暴力计算。那么这个时候黑白段数相等,且...
分类:
编程语言 时间:
2016-05-13 01:05:04
阅读次数:
177
欧几里德算法 转载:http://blog.sina.com.cn/u/1885661061 原文章地址:http://blog.sina.com.cn/s/blog_7064e7850100yeu1.html 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。gcd函数就是用来求(a ...
分类:
编程语言 时间:
2016-05-04 10:16:36
阅读次数:
243
欧几里得算法又叫辗转相除法,是求解最大公约数的一种古老的方法。 废话不多说,直接开证: 题目:求解正整数a,b(a >= b)的最大公约数。 a总可以用b来表示:a = qb + p; 这个式子怎么理解呢? 我们可以这样理解:a是被除数,b是除数,q是商,p是余数(p = a % b)。 设 r 为 ...
分类:
编程语言 时间:
2016-05-03 23:35:58
阅读次数:
355
代码: 测试: 原理: 第一个最大公约数使用的2300年前被发明的欧几里得算法求得,大致原理为: 第二个最小公倍数更简单。 是不是So Easy! ...
分类:
编程语言 时间:
2016-05-01 14:43:48
阅读次数:
199
找找看,能发现两份代码的区别么? 事实上,只有第一份是正确的,而第二份代码有着很隐蔽的错误 在exGcd的过程中,我们求ax+by=g(g=gcd(a,b))的一组解,需要先递归求出ay+bm=g(m=x mod y)的解 记x=ky+m(k=x div y),欲由ay+b(x-ky)=g(整理得b ...
分类:
编程语言 时间:
2016-04-29 09:24:34
阅读次数:
560
题目大意:
给定两个正整数和,求的所有因子和对9901取余后的值。
分析:
很容易知道,先把分解得到,那么得到,那么
的所有因子和的表达式如下
因为要取模且存在除法,所以要用到逆元。
对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元。
逆元一般用扩展欧几里得算法来求得,如...
分类:
其他好文 时间:
2016-04-22 19:07:31
阅读次数:
136
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是 它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下 去,总能碰 ...
分类:
编程语言 时间:
2016-04-21 20:22:07
阅读次数:
300
这个算法称为欧几里得算法。不会溢出,因为<!--EndF-->gcd函数的递归层数不超过4.785lgN + 1.6723,其中N=max{a,b}。 让gcd递归层数最多的是gcd(Fn,Fn-1)。利用gcd还可以求出两个整数a和b的最小公倍数lcm(a,b)。 这个结论很容易由唯一分解定理得到 ...
分类:
编程语言 时间:
2016-04-21 20:09:34
阅读次数:
222
今天我们来探讨逆元在ACM-ICPC竞赛中的应用,逆元是一个很重要的概念,必须学会使用它。
对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元。
逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为。
推导过程如下
求现在来看...
分类:
其他好文 时间:
2016-04-09 13:59:31
阅读次数:
180