数论
文章平均质量分 71
Weiguang_123
这个作者很懒,什么都没留下…
展开
-
poj 3070(矩阵的快速幂)
这道题的意思是通过矩阵的幂来求Fibonacci数列的第n项,且只要求出它的后4位数。#include #include #include using namespace std;struct Matrix{ int v[2][2];};Matrix cheng(Matrix a,Matrix b){ Matrix c; for(i原创 2012-03-05 02:31:25 · 1010 阅读 · 0 评论 -
hdu 4291 矩阵的快速幂(寻找循环节)
补充一个知识:摸运算肯定会出现的循环节的。那么循环嵌套,对内层求MOD,层层向外跳出。现暴力求出循环节,然后用矩阵的快速幂。构找矩阵的方法:一般的对于线性递推方程fn=a1fn-1+a2fn-2+……+aifn-i线性递推方程即形如 fn=a1fn-1+a2fn-2+……+aifn-i的方程以斐波那契数列为例 an=an-1+an-2我们的目的是通过矩阵乘法,求得斐波那原创 2012-09-19 09:21:44 · 1862 阅读 · 2 评论 -
数和矩阵快速幂hdu 3493
下面是 m^n % k 的快速幂:// m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) { if (n & 1) b = (b*m)%k; n = n >> 1 ; m = (m*m)%k; } re原创 2012-09-18 04:41:57 · 837 阅读 · 0 评论 -
hdu 4389:打巨表
题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求。即使你不会DP,也可以分段打表,比如10w为一个区间,统计这有多少个符合要求,然后对于一个数,先判断在哪个区间,再把之前的求和,对所在的区间暴力搜。记得打表用的函数:freopen("E:\\out.txt","w",stdout);#include #include #include #in原创 2012-08-21 22:31:44 · 9275 阅读 · 0 评论 -
多校第三场:hdu 4320(小数的进制转换,有限小数的条件)
题意: 给出A和B,一有限小数的A进制数转换成B进制数也是有限小数的判定。 我觉得如果进制转换做的好点的话,这种题应该不难。 解法:一个小数的A 进制可以表示为:1/(A^1)+1/(A^2)+1/(A^3).....转换成B进制就是不断的乘B直到为0;(1/(A^1)+1/(A^2)+1/(A^3).....)*B^m,进一步化简,要是结果为有限小数,则B^m/(A原创 2012-08-01 12:30:37 · 1510 阅读 · 1 评论 -
hdu 4364(矩阵相乘)
题意:给你一个aes矩阵和另一个矩阵matri让这两个矩阵相乘,我们重新定义矩阵相乘:1.相加用xor代替。2.相乘要看aes中的值,if 1: matri中的值不变。if 2: matri中的值左移一位。if 3: matri中的值左移一位,然后和左移前的值xor.Notice:After each shifting, a conditional xor with 0x1原创 2012-08-15 19:04:39 · 927 阅读 · 0 评论 -
poj 1601(扩展欧几里德求不定方程的整数解)
欧几里德的原理:(转)http://www.cnblogs.com/void/archive/2011/04/18/2020357.html扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(p, q) (解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现:int exGcd(int a, i原创 2012-08-11 13:42:00 · 2419 阅读 · 0 评论 -
多小第一场:hdu:4305(矩阵求生成树的个数+乘法逆元)
题目模型:给定平面上N个点。如果两点距离小于等于R,且两点间线段上没有其他点的时候,两点可以建立一条边。得到这个图后,求此图的生成树个数 mod 10007,如果图不连通则输出-1. 第一部分:构图。枚举两点是否符合距离限制,如果符合则对比此两点方向向量上是否有距离更小的其他点,然后根据情况建边删边。(O(N*N*log(N))) 第二部分:如果图连通,则根据生成树定理原创 2012-07-23 14:18:36 · 3165 阅读 · 0 评论 -
poj 2976(01分数规划搜索+二分答案)
题目大意就 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大 题目求的是 max(∑a[i] * x[i] / (b[i] * x[i])) 其中a,b都是一一对应的。 x[i]取0,1 并且 ∑x[i] = n - k; 转:那么可以转化一下。 令r = ∑a[i] * x[i] / (b[i] * x[i])原创 2012-07-02 17:25:48 · 4398 阅读 · 0 评论 -
div2_123_D
求s(X)所组成的折线出现的角。 思路:两直线的所成的角可以转化为他们与X轴的焦点,这很重要,代码就很简单了,但用long double 才能过啊,,用set.原创 2012-06-27 09:16:50 · 1180 阅读 · 0 评论 -
poj 3372(完全剩余系/奇偶性)
题意:老师给N个学生发糖,第x次发糖发给编号为 f(x) 的学生。可以推知:f(x) = x * (x+1) / 2 % N(学生号为 0, 1, 2, 3, ```N-1 )现在问你是否每个学生都能得到至少一颗糖。题解:要使每个学生都至少得到一颗糖,那么f(x) 应该构成模N的完全剩余系。那么这个问题的反面就是在什么情况下,f(x) 不能构成模N的完全剩余系。我们知道若存在 x转载 2012-06-24 00:44:23 · 1409 阅读 · 1 评论 -
poj 2389(高精度)N!
数组模拟!!!Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-#includeiostream>#includestring>usingnamespace std;string BigIntegerMult(cons转载 2012-03-21 00:37:55 · 567 阅读 · 0 评论 -
poj1401(N!末尾0的末尾0的个数)
题意很好理解,给定一个N数,求N!末尾有多少个连续0?我们知道,一个数的阶乘中含有一个10(20,30,40.。。。)都可以再末尾增加一个0,存在一个2*5,4*15.。。。也可以增加一个0;也就是说,从5开始,凡是遇到5,10,15,20,25,30,35。。。。都要增加一个0.至于5需要一个偶数来乘,偶数比5多得多,就不用考虑够不够乘的问题了。但是其中有一点很关键。就是类似于25,12原创 2012-03-10 23:06:45 · 1195 阅读 · 0 评论 -
hdu 1007(分治法求最近点对)
// 分治算法求最近点对#include#include#includeusing namespace std;struct point{ double x , y;}p[100005];int a[100005]; //保存筛选的坐标点的索引int cmpx(const point &a , const point &b){ return a.x < b原创 2012-10-26 00:40:14 · 689 阅读 · 0 评论