1、同余定理
(a+b)%c==(a%c+b%c)%c
(a*b)%c==[(a%c)*(b%c)]%c
因为有的数在int范围内,但是两个的乘积却超过了int范围,这样可以避免运算过程中超过int范围
2、gcd函数(即最大公约数)
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}...
分类:
其他好文 时间:
2014-07-25 11:09:31
阅读次数:
187
求一组数据的最小公倍数。
先求公约数在求公倍数,利用公倍数,连续求所有数的公倍数就可以了。
#include
int GCD(int a, int b)
{
return b? GCD(b, a%b) : a;
}
inline int LCM(int a, int b)
{
return a / GCD(a, b) * b;
}
int main()
{
int T, m, a,...
分类:
其他好文 时间:
2014-07-24 23:13:03
阅读次数:
203
最大公约数:代码: 1 #include 2 #include 3 long long gcd(int x,int y ) 4 { 5 return (y==0)?x:gcd(y,x%y); 6 } 7 8 int main() 9 {10 int m,n;11 whi...
分类:
其他好文 时间:
2014-07-24 22:08:12
阅读次数:
178
# include int main(void){ int x, y,temp; int r; printf("请输入两个正整数:\n"); scanf("%d %d", &num1, &num2); r = num1 % num2; temp = num2; while(r!=0) { nu...
分类:
系统相关 时间:
2014-07-23 15:16:56
阅读次数:
267
欧几里得
欧几里德算法
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。
基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。
第一种证明:
a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a, d|b,而r = ...
分类:
其他好文 时间:
2014-07-22 23:52:47
阅读次数:
344
题目链接要用大数,看了别人的博客,用java写的。题意:求n个运动周期不完全相同的天体在一条直线上的周期。分析:两个星球周期为a,b。则相差半周的长度为a*b/(2*abs(a-b)),对于n个只需求这n个分数的最小公倍数即可。分数的最小公倍数 = 分子的最小公倍数/分母的最大公约数 1 impor...
分类:
编程语言 时间:
2014-07-22 22:44:32
阅读次数:
221
一、题目POJ 1061 青蛙的约会【关于“欧几里得求最大公约数”和“扩展欧几里得算法”的题目】二、题目源程序#include using namespace std;#define LL long longLL gcd(LL a, LL b){ return b ? gcd(b, a%b)...
分类:
其他好文 时间:
2014-07-22 22:34:36
阅读次数:
253
取模运算本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!求模运算与求余运算不同。“模”是“Mod”的音译,模运算多应用于程序编写中。 Mod的含义为求余。模运算在数论和程序设计中都有着广泛的应用,从奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问...
分类:
其他好文 时间:
2014-07-22 00:25:34
阅读次数:
387
求最大公约数实际上是一个非常简单的问题,但是在ACM中如何将效率搞的最高也需要一点点技巧。下面将今天收集到的一点资料粘贴在此处。书上是说: 1.输入m、n(m为被除数,n为除数)2.m/n得余数r。3.判断r=0?是的话n为最大公约数。4.否则将n赋给m,r赋给n,循环2.辗转相除法:如: 求(45...
分类:
其他好文 时间:
2014-07-22 00:08:35
阅读次数:
219
//algorithm.henum SWAP_TYPE{MEMORY, COMPLEX};struct SIntArray{ int *pData; int num; SIntArray():pData(NULL),num(0){} void Clear(){delete ...
分类:
其他好文 时间:
2014-07-21 09:38:33
阅读次数:
263