数论
ZoneFv
这个作者很懒,什么都没留下…
展开
-
nyoj 417 死神来了
http://acm.nyist.net/JudgeOnline/problem.php?pid=417思路:这题用到了鸽笼原理(有n+1件或n+1件以上的物品要放到n个抽屉中,那么至少有一个抽屉里有两个或两个以上物品。),在本题,我们m看作为m个鸽笼,,我们将1到N所有数的倍数分组,最大分组数为p=N / 2 + (N & 1),看作p只鸽子,问是否能把这p只鸽子放入到m个笼子里,保证每原创 2012-07-22 12:09:33 · 1150 阅读 · 3 评论 -
nyoj 743 复杂度 (数论)
题目大意:求出for循环中 operation 执行的次数解题思路:这是我队友chl出的一道题目,刚开始认为是找规律问题,然后就开始考虑找规律,昨天晚上找到一个自认为非常完美的规律,结果今天早上来发现是错的,后来经他提醒终于知道了,这一题需要用到组合数学的知识。。首先m层,每层都有一个值 i、j、k….我们发现这m个值是不重复的,而且是递增序列,于是我们可以想到只需原创 2013-07-30 10:35:11 · 1117 阅读 · 0 评论 -
区间划分问题
1.直线(Line)分割平面由于第n条直线与前n-1条直线相交于n-1个点,这n-1个点将第n条直线划分为n个部分,而这第n条直线的两边分别有L(n-1)和n个部分。故L(n)=L(n-1)+n; L(0) = 1 公式:(n^2+n+2)/2 ; 2.一次折线(Zig)分割平面由于一条一次折线相对于两条直线相交少了两个部分,所以Z(n) = L(2n) - 2n原创 2013-05-01 09:39:16 · 2745 阅读 · 0 评论 -
矩阵题目总结
今天开始学习矩阵方面的知识,主要参照大牛的博客十个利用矩阵乘法解决的经典题目经典题目一:给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。操作有平移、缩放、翻转和旋转这里的操作是对所有点同时进行的。其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。利用矩阵乘法可以在O(m)的时间里把所有操作原创 2013-03-20 11:05:56 · 1720 阅读 · 0 评论 -
斐波那契数列
[定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质其实,结合“互质”的定义,和一个很经典的算法就可以轻松证明对,就是辗转相除法互质的定义就是最大公约数为1数学归纳法是很有用的证明方法,我们接下来这个定理用数学归纳法就很好证明:[定理2]若i为奇数, f(i)*f(i)=f(i-1)*f(i+1)+1,否转载 2013-03-21 08:14:54 · 1506 阅读 · 0 评论 -
扩展欧几里德算法
扩展欧几里德定理 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by#includeint x,y,q;void extend_Eulid(int a,int b){if(b == 0){x = 1;y = 0;q = a;}else{//printf("原创 2013-03-19 09:13:50 · 1343 阅读 · 0 评论 -
取余运算符
转自 http://wenku.baidu.com/view/eca578ec856a561252d36f8d.htmlC的%运算知多少呢?当是正整数时,可能大家都知道。例如:5%3等于2, 3%5等于3。当存在负数时呢?先看看例子:例一:int main(){int x;x = -6%5; printf("%2d/n",x); x = 6%-5; print转载 2012-11-10 20:36:56 · 4602 阅读 · 0 评论 -
nyoj 503 解方程 (牛顿迭代)
主要思想:首先,选择一个接近函数零点的,计算相应的和切线斜率(这里表示函数的导数)。然后我们计算穿过点并且斜率为的直线和轴的交点的坐标,也就是求如下方程的解:我们将新求得的点的坐标命名为,通常会比更接近方程的解。因此我们现在可以利用开始下一轮迭代。迭代公式可化简为如下所示:原创 2012-09-12 10:48:27 · 927 阅读 · 0 评论 -
nyoj 191 小珂的游戏 和 nyoj361 又遇约瑟夫环
题目很有意思,主要思想是模拟它的过程,然后把求出的结果打表保存起来,不然会超时的主要难点就在于找规律,我当时根据自己找到的规律写出来的,竟然8的结果不对,很郁闷不知道为什么??#includeint main(){ int n,m,rest,now; int sign[15]={0}; while(~scanf("%d",&n),n) { if(sign[n]==0)原创 2012-08-10 11:03:51 · 1648 阅读 · 0 评论 -
分拆数 && hdu 4651 && hdu 4658
转载自:http://blog.csdn.net/zhoufenqin/article/details/9821617分拆数在将分拆数之前先介绍一点五边形数http://en.wikipedia.org/wiki/Pentagonal_number 1. 五边形数是能排成五边形的多边形数。 第n个五边形数公式:p(转载 2013-08-09 15:56:18 · 1173 阅读 · 0 评论