摘要: 所谓的幂取模就是a ^ n mod m的值。(m 小于a ^n的位数)我们可以很容易想到对于要计算这个可以采用分治思想,优化算法,也就是计算a ^ n,我们只需要计算 a ^ n/2依次类推,于是有如下代码:#include int pow_mod(int a,int n,int m){ if(n ... 阅读全文
posted @ 2013-04-21 11:18 算法黑魔王 阅读(159) 评论(0) 推荐(0) 编辑
摘要: #include #include #define MAXN 1000char n[MAXN];int m;int main(){ scanf("%s%d",n,&m); int len = strlen(n); int ans = 0; for(int i = 0 ; i < len; i++)... 阅读全文
posted @ 2013-04-21 11:17 算法黑魔王 阅读(147) 评论(0) 推荐(0) 编辑
摘要: First:我们有如下公式:(a + b) mod n = ((a mod n) + (b mod n) ) mod n;(a - b) mod n = ((a mod n) - (b mod n) + n) mod n;ab mod n = (a mod n)(b mod n)mod n注意第二个... 阅读全文
posted @ 2013-04-21 11:17 算法黑魔王 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 首先我们由欧几里德拓展算法可以求得一组解(d,x,y),而这组解通过与ax + by + c = 0中的c / d,如果c是d的倍数则这个点是直线上的一个解。分析:设a,b,c为任意整数,g = gcd(a,b),方程ax + by = g的一组解是(x0,y0),则当c是g的倍数时ax + by ... 阅读全文
posted @ 2013-04-21 11:15 算法黑魔王 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 扩展欧几里德算法主要用来求ax + by = d这样的等式的整数解,当且仅当gcd(a,b) = d时该算法可直接求该等式,当gcd(a,b) != d时,可先求ax + by = gcd(a,b),然后按照进行值统一法,见解求解。首先统一如下知识1. a mod b = a - floor(a /... 阅读全文
posted @ 2013-04-20 23:22 算法黑魔王 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 我们介绍一下素数筛选法。给你1---n的连续整数,把这些数中的素数筛选出来,用到的思路很简单。其原理基于,对于数p如果p的倍数存在与表中,则这个p的倍数一定不是素数,我们可以把它删除,但是这样删除的干净吗?这是个好问题,我们可以从小到大,从2开始枚举,至于1为什么不行,想想也应该能明白吧,然后可以用... 阅读全文
posted @ 2013-04-20 17:39 算法黑魔王 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 题目:给出正整数n和m,区间[n,m]内的“无平方因子”的数有多少个?整数p无平方因子当且仅当不存在k > 1,使得p是k * k的倍数。1 #include #include #define MAXN 100000000int vis[MAXN]; int main(){ int n,m; whi... 阅读全文
posted @ 2013-04-20 16:35 算法黑魔王 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 这道题目,读了许久,都没明白过来为什么判断表达式的值能否为整数,只要判断E = x1/(x2/x3/....xk) = x1 * x3 * ...*xk / x2是否为整数。后来才明白,其实是这样的,无论你怎么加括号下x2都必然在分母位置,要证明这个可以用数学归纳法去证明,这里不再证明,但你可以试试... 阅读全文
posted @ 2013-04-20 16:34 算法黑魔王 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 1.有状态转移方程为f(i,j) = max(f(i,k) + f(k,j) + w(i,j,k));f(i,j)表示从vi到vj的简单通路(我们默认vj指向vi),这样才能构成凸多边形,同时表示在这个凸多边形中权和的最大值。 2.由3边的凸多边形也就是三角形开始递推上去,构建整个动态规划。#inc... 阅读全文
posted @ 2013-04-16 23:44 算法黑魔王 阅读(260) 评论(0) 推荐(0) 编辑
摘要: waiting 阅读全文
posted @ 2013-04-16 12:19 算法黑魔王 阅读(89) 评论(0) 推荐(0) 编辑