随笔分类 - 数学Note
摘要:递推说白了就是找规律,然后写出他的递推方程,有的还可以写出通项公式,然后准确预测出第n项的值。因为这种规律存在着前因后果的关系,即是说,后一项的结果往往和前一项或前几项有着某种联系。这种联系不仅仅存在于数字之中,世间万物亦是如此。 由于,递推是深入理解动态规划的基础,就我目前的水平,看到动态规...
阅读全文
摘要:在中学时,我们就知道斐波那契数列是个很神奇的数列,在自然,生物,数学中都能找到他的影子,现在本人总结一下我关于斐波那契数列知识的例题。 斐波那契数列公式: 因为(1-sqrt(5))/2的绝对值小于1所以当i较大的时候,往往可以忽略掉这一项,f(n)≈((1+Sqrt(5))/2)^...
阅读全文
摘要:对于式子的值,我们若直接算出等比数列的和再模上M,那么中间结果可能会溢出。对于这个问题,我们可以用二分求和来做,这样一来,它的中间结果每次都在模M,任何时候都不会有溢出的危险。对上述式子进行如下化简:根据,以上化简的结果,我们可以得出递归的代码: 1 #include 2 #include ...
阅读全文
摘要:我们都知道矩阵可以用来很方便的求多个方程组,但矩阵的作用不单单只用来求方程组。下面记录一下本人对矩阵应用的一点点了解,还有很多应用看不懂,以后看懂了会在此处慢慢更新。 1.化简递推类问题。 比如,我们现在要求第N项Fiboncci值模上一个p的结果是多少? 2.给定一个有向图,问从A点...
阅读全文
摘要:本文系转载:http://blog.sina.com.cn/s/blog_a661ecd50101cv41.html 我们先研究这个问题的一部分:哪些素数是两平方数之和?为什么我们先研究素数,有个很重要的原因是:若两个正整数都是两平方数之和,那么它们的乘积也是两平方数之和。道理很简单,设两个正...
阅读全文
摘要:本文系转载:http://www.cnblogs.com/Lyush/archive/2012/08/06/2625113.html 欧拉函数的作用已不用再明说什么,只是苦于数论方面的知识实在欠缺,一直搞不懂原理,先转载一篇自己慢慢斟酌,感谢网上众多大牛的分享-----------------...
阅读全文
摘要:我们知道欧几里得扩展定理是同余方程ax≡b(mod c)解得有力方法。这个方程可能有解也可能没有解,下面给出有解的条件: 定理:同余方程ax≡b(mod c)有解,当且仅当gcd(a,c)|b,且方程有gcd(a,c)个解。 原因是求ax≡b(mod c)可以转化为求ax+cy=b。 令:...
阅读全文
摘要:给出方程a*x+b*y=c,其中所有数均是整数,且a,b,c是已知数,求满足那个等式的x,y值?这个方程可能有解也可能没解也可能有无穷多个解(注意:这里说的解都是整数解)? 既然如此,那我们就得找出有解和无解的条件! 先给出定理:方程a*x+b*y=c有解,当且仅当c%gcd(a,b)=...
阅读全文
摘要:我们都知道欧几里得算法是用来快速求两个数的最大公约数的算法,效率较高:2O(logn)。 我们先给出算法的实现: 1 int gcd_1(int a, int b) 2 { 3 if(b==0) return a; 4 return gcd_1(b, a%b); 5 } 6 ...
阅读全文
摘要:假设我们现在需要知道 ab 的后 n位数或前 n位数,简单直观的做法就是求出ab 的值,然后在分别取前n位或后n位,不过在 a,b很大的情况下显然是无法存储的。所以,直接求是不可能的了。 让我们先来看看后 n位如何求?因为我们只要后n位,那么我们都知道把ab 的值模上一个10n就是所求。根据求...
阅读全文
摘要:1 #include 2 #include 3 using namespace std; 4 #define N 1010 5 6 //两个数的最大公约数和最小公倍数 7 __int64 Gcd(__int64 a, __int64 b) 8 { 9 if(b==0)10 ...
阅读全文
摘要:给你两个数 a,b。问你区间 [1,N]中都是有多少个数是a,b的公倍数。当数据很大的时候,遍历肯定会超时。其实,我们可以首先求出 lcm(a,b)。因为我们知道(a,b)公倍数都是它最小公倍数的倍数。所以,我们只需要求[1,N]中lcm(a,b)的倍数------即在[1,N]中有多少个数能...
阅读全文
摘要:给你两个数__int64 类型的整数 a ,b,c。问你,(a*b)%c的值是多少??我们知道: (a*b)%c = ((a%c)*(b%c))%c 。不过即使这样做,在c很大的情况下,(a%c)*(b%c)还是会越界。下面给出二进制的实现代码: 1 #include 2 #include...
阅读全文
摘要:1 #include 2 #include 3 using namespace std; 4 5 #define Max(x, y) (x > y ? x : y) 6 7 int main() 8 { 9 int n, m;10 while(~scanf("%d",&n)) ...
阅读全文

浙公网安备 33010602011771号