数学数论
文章平均质量分 81
Lbbbbpro029
这个作者很懒,什么都没留下…
展开
-
HDU 3117 Fibonacci Numbers(斐波那契数列通项+矩阵快速幂)
大意:8位及以下的fib直接输出,8位以上的输出XXXX(fib前四位)...XXXX(fib后四位)。思路:8位以下的打表输出就好了。fib的前四位可以利用通项公式fn=1/√5/*[(1+√5)^n/2)-(1-√5)^n/2]来求,利用对数知识求解。例如:log(2335566)=log(2.335566)+2.那么log(2.335566)是log(233556原创 2015-08-13 13:31:46 · 507 阅读 · 0 评论 -
20160315 LightOJ 1236 Pairs Forming(素因子分解)
题意:long long pairsFormLCM( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) for( int j = i; j <= n; j++ ) if( lcm(i, j) == n ) res++; // lcm means least common m原创 2016-03-15 16:43:51 · 286 阅读 · 0 评论 -
20160314 POJ1061青蛙的约会(拓展欧几里得)
关于拓展欧几里得算法运用拓展欧几里得算法,可以求出GCD(a,b),并且求出一组满足AX+BY=GCD(A,B)。1.当B==0时,X=1,Y=0等式成立2.当B>0时,有 BX'+(A mod B)Y'=GCD(B,A mod B)=GCD(A,B)可以通过变形得到 AY'+B(X'-A/B*Y')=GCD(A,B)由此可得 X=Y‘,Y=X'-原创 2016-03-14 16:36:08 · 265 阅读 · 0 评论 -
20160322 HDU5317 RGCDQ(筛数+树状数组)
题意:F(n)是n的不同素因子的个数,求在[ L,R ],区间内最大的gcd(F(i),F(j))。思路:可以注意得到数据范围小于1E6,意味着F(n)的取值范围很小(不会超过7)。很容易想到记每个位置的F(n),在查询区间时返回区间内各个F(n)的个数,然后判断gcd值的方法。用素数表将范围内所有的F(n)筛选出来,通过树状数组来求区间和。#include #inclu原创 2016-03-22 21:14:50 · 240 阅读 · 0 评论 -
20160321 HDU1452 Happy 2004(快速幂)
题意:求2004的x次方的所有因子的和,结果对29取余。思路:还是这个公式,2004=2^2*3*167因此sigam(n)=(2^(2*x+1)-1)*(3^(x-1)-1)/2*(167^(x+1)-1)/166因为167%29=22,可以结果可简化为:ans=((2^(2*x+1)-1)*(3^(x-1)-1)/2*(22^(x+1)-1)/21)%29原创 2016-03-22 21:27:22 · 274 阅读 · 0 评论 -
20160322 HDU4704 Sum(费马小定理+快速幂)
题意:s(k)为所有元素为正整数并且和为N的k阶向量的个数,求s(1)+s(2)+...s(N)的值。大意:可以明显的发现规律为2^(n-1)。对于大数我们可以通过费马小定理化为小于1E9+6的数,之后用快速幂求值。这个代码乱写的,其实可以优化得更好,本来还准备用java的modpow来A结果卡了java的时间= =。#include #include using name原创 2016-03-22 21:06:23 · 312 阅读 · 0 评论 -
20160321 HDU2588 GCD(欧拉函数+枚举)
题意:求1-n内有多少x满足gcd(x,n)>=m。思路:枚举n的因子x,当gcd(x,n)>=m时求n/x的欧拉函数。因为要使gcd(x*i,n)=gcd(x,n),i必须与n/x互质,这种情况有phi(n/x)种。最后求和,即为所求结果。#include #include using namespace std;int phi(int n){ in原创 2016-03-22 20:57:43 · 258 阅读 · 0 评论 -
20160321 CodeForces 7C Line(拓展欧几里得)
题意:给你a,b,c,求在ax+by+c=0线段上的坐标为整数的点,没有输出-1.思路:ax+by=-c符合拓展欧几里得的形式,模板走你,注意a或b为零的处理。#include #include using namespace std;long long exgcd(long long a,long long b,long long &x,long long &y){原创 2016-03-22 20:44:59 · 248 阅读 · 0 评论 -
20160321 POJ1006 Biorhythms (中国剩余定理)
题意:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定原创 2016-03-22 20:40:02 · 305 阅读 · 0 评论 -
20160321 POJ2478 Farey Sequence(欧拉函数)
题意:求分母小于等于n的所有无法约分的分数的个数。思路:显然有F(2)=phi(2),F(n)=F(n-1)+phi(n)。即求2-n欧拉函数的和,模板走你。#include #include using namespace std;long long powmod(long long a,long long i,long long n){ if(i==0)原创 2016-03-22 20:30:46 · 209 阅读 · 0 评论 -
20160330 HDU1695 GCD(欧拉函数+容斥原理)
题意:求1-b与1-d之间有多少组gcd=k的一对数。思路:令b=b/k,d=d/k,原题就变为了求1-b与1-d之间有多少互质的一对数。假设b对于[b+1,d]中,将每个数进行素因子分解,用容斥定理(酷炫的二进制)可以求出所有不互质的对数,再用总数减掉。两部分的和即为所求。#include #include using namespace std;long l原创 2016-03-31 19:23:05 · 402 阅读 · 0 评论 -
20160314 数论专项
A.Prime Independence(素数筛法+最大独立集)算法还没研究明白,贴个链接。http://www.2cto.com/kf/201506/404426.htmlB.Pairs Forming LCM(素因子分解)http://blog.csdn.net/lbbbbpro029/article/details/50897669C.Sigma原创 2016-03-19 19:16:48 · 247 阅读 · 0 评论 -
20160317 Uva11395 Sigma Function(素因子分解+各种公式+筛数)
题意:sigma(n)=n的所有因子之和,例如sigma(24) = 1+2+3+4+6+8+12+24=60,求1-n内有多少sigma函数的值为偶数。思路:从测试数据可以看出为偶数的情况比较多,所以可以反过来对奇数的情况进行讨论。从上述公式能够看得出sigma函数的值可以通过分解n的素因子得到。而对于上述公式可以有如下分析:1.对于唯一的偶素数2原创 2016-03-17 13:29:20 · 481 阅读 · 0 评论 -
HDU 1316 How Many Fibs?(二分查找+大数加法)
大意:求[a,b]之间有多少Fib。题解:先用大数加法打表求出fib数列。再用二分查找找出第一个大于等于a的位置和最后一个大于b的位置,输出下标差值。这里我玩了一下,将表打出来以后直接放到初始化里了...#include #include #include #include #include using namespace std;char f[][120]=原创 2015-08-13 14:02:57 · 435 阅读 · 0 评论 -
20161005 弱校联萌10.5 H Hash Collision(二分+FFT+dp)
本来不咋爱写博客的,但是这题实在让我受益匪浅,所以记录一下。 = =题目大意是求所有长度为n的只含大写字母的字符串按所给函数进行hash,hash值有多少对相同,结果mod1e6+3。思路:刚开始想到用所给的hash函数进行dp,,即记录到第i个字符hash值为j的个数用26个字母递推到第i+1个字符对应的hash值,加上dp(i,j),是但是考虑了下复杂度是O原创 2016-10-05 20:34:54 · 460 阅读 · 0 评论