数学
文章平均质量分 74
cillyb
这个作者很懒,什么都没留下…
展开
-
HDU 4407 Sum(容斥)
题意:一个长度为n的序列(初始为1, 2, 3, ...n),现在q次操作,操作1:给你L,R, p, 求区间[L, R]中与p互质的数的和;操作2:修改第x个数为c。(n 思路:因为序列是1-n,所以区间求和可以利用容斥,因为q才1000,所以修改可以存起来,查询时暴力更新。代码:#includeusing namespace std;typedef long原创 2017-10-31 22:29:49 · 313 阅读 · 0 评论 -
HDU 1027 Ignatius and the Princess II(逆康托展开)
题意:给你一个n,让你求n的全排列中第m小的序列。(n, m 思路:逆康托展开 (知识见:点击打开链接)代码:#include#include#include#includeusing namespace std;const int maxn = 10;int fac[maxn] = {1, 1};bool vis[100005];void init(原创 2017-07-29 20:30:11 · 347 阅读 · 0 评论 -
Libreoj #6165. 一道水题 (快速线性筛素数)
题意:求出能整除[1,n]中所有数的最小整数,对100000007取模。(注意是1e8+7!!!)思路:首先用线性筛筛出[1,n]的所有素数,记为p[i]。答案是对每个p[i],求出最大的p[i]^k,满足p[i]^k之前一直用的是一般的素数筛选法,在这会T,要用快速线性筛代码:#include#include#includeusing namespace s原创 2017-07-12 12:03:40 · 1473 阅读 · 0 评论 -
51nod 1013 3的幂的和(逆元 or 矩阵快速幂)
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007Input输入一个数N(0 Output输出:计算结果Input示例3Output示例40思路:解法一:等比数列求和公式然后逆元求解。解法二:可推得Sn = 3*Sn-1 + 1,可构造矩阵快速幂原创 2017-07-10 23:50:18 · 418 阅读 · 0 评论 -
之江学院2017ACM 校赛 Problem K: qwb与小数(思维 快速幂)
Descriptionqwb遇到了一个问题:将分数a/b化为小数后,小数点后第n位的数字是多少?做了那么多题,我已经不指望你能够帮上他了。。。Input多组测试数据,处理到文件结束。(测试数据每组测试例包含三个整数a,b,n,相邻两个数之间用单个空格隔开,其中0 Output对于每组数据,输出a/b的第n位数,占一行。原创 2017-06-03 16:19:27 · 572 阅读 · 0 评论 -
之江学院2017ACM 校赛Problem D: qwb与神奇的序列(找规律 快速幂)
有一个序列,初始时只有两个数x和y,之后每次操作时,在原序列的任意两个相邻数之间插入这两个数的和,得到新序列。举例说明:初始:1 2操作1次:1 3 2操作2次:1 4 3 5 2……请问在操作n次之后,得到的序列的所有数之和是多少?Input多组测试数据,处理到文件结束(测试例数量输入为一行三个整数x,y,n,相邻两个数之间用单个空格隔开。(0原创 2017-06-01 20:18:31 · 1652 阅读 · 0 评论 -
1489: L先生与质数V4(二分+大区间求素数模板)
题意L先生想求出第n个质数(素数)是多少,你能帮助他吗?数据T 输入1234101000输出Case 1: 2Case 2: 3Case 3: 5Case 4: 7Case 5: 29Case 6: 541HDU5901是个求1-1e11内素数原创 2017-05-31 21:07:50 · 620 阅读 · 0 评论 -
HDU 5901 Count primes(求1e11内素数个数模板)
板子:#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;using namespace std;const int N = 5e6 + 2;bool np[N];int prime[N], pi原创 2017-05-14 19:20:13 · 816 阅读 · 0 评论 -
51nod 1184 第N个质数(二分+大区间求素数模板)
第1个质数是2,第3个质数是5,给出一个数N,求第N个质数。Input输入1个数N(1 Output输出第N个质数。思路:二分套求素数个数模板。代码:#include #include #include #include #include #include #include #include using namespace std;ty原创 2017-05-31 23:37:08 · 1098 阅读 · 0 评论 -
HDU 5175 Misaki's Kiss again (数学)
题意:求0到N-1中,有多少数m满足gcd(N,m)=N^m思路点击打开链接:令M = N xor K,原式:gcd(N,N xor K) == N xor (N xor K) == K 由此我们可以发现K是N的约数,找到所有N的约数,判断是不是满足那个等式即可,因为是异或运算,结果可能比约数本身大,如1xor2==3,还有异或出来结果等于0的舍掉,gcd(n,n) !=原创 2017-07-31 22:25:34 · 377 阅读 · 0 评论 -
HDU 5117 Fluorescent (数学 状压DP)
题意:有n个灯泡,初始均为关闭状态,m个开关,每个开关可以改变一些灯泡的状态(开变关,关变开),打开每个开关的操作是随机等概率的,以X表示每次开着灯泡的数量,求E(x^3) *2^m % 1e9+7思路:原创 2017-08-03 01:03:15 · 479 阅读 · 0 评论 -
欧拉函数与欧拉定理
摘自ACdreamers的博客先来介绍几个与欧拉函数有关的定理:定理一:设m与n是互素的正整数,那么定理二:当n为奇数时,有。 因为2n是偶数,偶数与偶数一定不互素,所以只考虑2n与小于它的奇数互素的情况,则恰好就等于n的欧拉函数值。定理三:设p是素数,a是一个正整数,那么 关于这个定理转载 2017-08-04 23:35:41 · 932 阅读 · 0 评论 -
2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 HDU 6206 1001 Apple(三角形外接圆圆心和半径)
题意:给你三个点,保证不再同一条直线上,再给你一点,问你是否在这三个点形成的圆外。思路:就是求出三个点外接圆的圆心和半径判断下。精度问题需要用Java大数。已知三点坐标,求外接圆圆心坐标与半径。a=((y2-y1)*(y3*y3-y1*y1+x3*x3-x1*x1)-(y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1))/(2.0*((x3-x1)*(y2原创 2017-09-17 18:12:46 · 2107 阅读 · 1 评论 -
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function (切比雪夫多项式)
题意:思路:手算了几项,然后把n为6的那一行输到OEIS,就搜到了切比雪夫多项式。然后百度第一类切比雪夫多项式是这个公式:注意"!!"不是阶乘的阶乘,而是不超过n且与n具有相同奇偶性的所有正整数连乘积。n分类讨论下,当n为偶数时m=2*k, n为奇数时m=2*k-1还有注意下"!!"的约分,可能下面的比上面的大代码:#includeus原创 2017-09-16 18:06:28 · 1300 阅读 · 0 评论 -
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin(概率)
题意:一枚硬币,投一次正面朝上概率为q/p, 求投k次,正面朝上的次数为偶数次的概率X/Y,输出(X∗Y−1)mod(109+7)思路:代码:#includeusing namespace std;const int mod = 1e9+7;typedef long long ll;ll p, q, n;ll qmod(ll x, l原创 2017-09-16 17:59:58 · 663 阅读 · 0 评论 -
BZOJ 1257 余数之和sum (思维 数学 分段)
Description给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=71思路:=∑k mo原创 2017-07-15 23:13:43 · 541 阅读 · 0 评论 -
SPOJ VLATTICE Visible Lattice Points(莫比乌斯反演入门)
题意:题意和POJ3090类似只是变成三维,可以简化为求gcd(a,b,c)=1方案数, 0思路:代码:#include#include#include#includeusing namespace std;typedef long long ll;const int maxn = 1e6+5;bool vis[maxn];int mu[原创 2017-08-05 00:47:38 · 437 阅读 · 0 评论 -
莫比乌斯反演
摘自ACdreamers的博客莫比乌斯反演在数论中占有重要的地位,许多情况下能大大简化运算。那么我们先来认识莫比乌斯反演公式。 定理:和是定义在非负整数集合上的两个函数,并且满足条件,那么我们得到结论 在上面的公式中有一个函数,它的定义如下: (1)若,那么 (2)若,均为互异素数转载 2017-08-05 00:29:08 · 279 阅读 · 0 评论 -
POJ 1811 Prime Test(判断大素数&求最小质因子)
题意:给你一个n(2思路:板子。用Miller_Rabin算法进行素数判断。在用Pollard_rho分解因子。代码:#include#include#include#include#includeusing namespace std;typedef long long ll;//************************************原创 2017-08-05 00:24:25 · 897 阅读 · 0 评论 -
POJ 2478 Farey Sequence & POJ 3090 Visible Lattice Points (欧拉函数)
POJ 2478 题意:给定一个数n,求小于或等于n的数中两两互质组成的真分数的个数。POJ 3090 题意:一个(0, n)*(0, n)的图,从点(0,0)到点(x,y)画线段不经过其它点,问能画多少条。思路:POJ30901×1只有一个斜率为0的2×2斜率有0,1/2(0已经算过了,以后不再算了),其实就多了一个斜率为1/2的。3×3的时候,有1/3,2/3两原创 2017-08-05 00:06:46 · 404 阅读 · 0 评论 -
素数判断 Miller_Rabin算法-hoj1356和51nod1186质数检测V2
源博客这么神奇的代码就能过51nod1186.。。[java] view plain copyimport java.util.Scanner; import java.math.*; public class Main { public static void main(String[] args) {转载 2017-05-31 23:16:11 · 863 阅读 · 0 评论 -
SPOJ:EXPOR - OR(数学)
点击打开题目 题意给出n个数A1, A2...,AN, 任意选择两个数i,j(1 以既约分数的形式输出。数据1 输入220 031 2 3输出0/13/1思路可选择的总方案数为n*(n-1)/2,若我们能算出所有方案的答案总和,约分后即为答案。暴力枚举是n原创 2017-05-30 16:37:55 · 476 阅读 · 0 评论 -
qduoj 102 一道非常简单的数学题(构造)
题意:给你三角形的边长a, b, c和一个L, L可以用来加长边,问加L后能形成的最大面积为多少。思路:根据海伦公式,可以看出,要使面积最大,就要让三条边竟可能相等,所以构造让他们差值最小即可。代码:#include#include#include#include#includeusing namespace std;typedef long long ll原创 2017-05-15 19:45:58 · 691 阅读 · 0 评论 -
poj 1006 Biorhythms (中国剩余定理)
摘录了一些讲解中国剩余定理的博客,感觉他们写的很好 易懂。看完这三篇 对中国剩余定理应该也是能够对他有些了解了。题目链接:点击打开链接该题代码:#includeusing namespace std;int a[4], m[4] = {23, 28, 33}, d;void ex_gcd(int a, int b, int &x, int &y){ if(原创 2016-11-16 15:42:22 · 496 阅读 · 0 评论 -
hdoj 5667 Sequence(矩阵快速幂、费马小定理)
看着就像是要用矩阵做,但是有个a^b,不知道怎么去推递推式。思路:对两边取对数,就可以得到loga(fn) = c*loga(fn-1) + loga(fn-2) + b,然后令Fn = loga(fn), 可以得到Fn = c*fn-1 + fn-2 + b之后构造矩阵快速幂就行了,得到Fn, fn = a^(Fn), 要mod p,指数又特别大,所以需要用到原创 2016-11-16 17:45:33 · 559 阅读 · 1 评论 -
欧拉函数
转自:点击打开链接欧拉函数 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。 Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=转载 2016-11-18 16:34:21 · 375 阅读 · 0 评论 -
hdoj 5584 LCM Walk(数学,逆推)
题意:在位置(x, y),可以走到(x+lcm(x, y), y) 或(x, y+lcm(x, y))或者不移动。给定终点位置,求可能的起点位置数。思路:设当前在(x, y)处,下一步可以是(x+lcm(x, y), y)或(x, y+lcm(x, y)). 令gcd(x, y) = k, x = m*k, y = n*k, 则(m*k+m*n*k, n*k)或(m*k, n*原创 2016-11-14 23:46:52 · 506 阅读 · 0 评论 -
hdoj 5686 Problem B(Astar Round1)递推
f(n)表示n个1可以构成的方案数。则加一个1的时候,前面n种仍然成立 f(n+1)=f(n)+*; 第n+1个1和第n个1相加构成2,前面n-1个1可以组合的个数。 f(n+1)=f(n)+f(n-1);没说要取模,所以肯定要用到大数了。代码:import java.math.BigInteger;import java.util.Scanner;pub原创 2016-11-14 13:56:34 · 406 阅读 · 0 评论 -
hdoj 5666 Segment(二进制优化乘法, gcd)
SegmentTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1555 Accepted Submission(s): 576Problem Description Silen August原创 2016-09-25 14:15:24 · 718 阅读 · 0 评论 -
三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明
转自:http://blog.csdn.net/synapse7/article/details/19610361一、威尔逊定理若p为质数,则p|(p-1)!+1亦:(p-1)! ≡ p-1 ≡ -1(mod p)例题:HDU 2973 YAPTCHA (威尔逊定理及其逆定理)解题报告见http://blog.csdn转载 2016-10-19 19:41:04 · 794 阅读 · 0 评论 -
poj 1014 Dividing(多重背包/母函数)
典型的均分问题,最简单的方法是用多重背包,当然也可以用母函数解决,但是这题n很大,最大是20000,所以用母函数必须剪枝。但是不会剪枝,看到有好多剪枝方法...最多的一个是将数量6作为分界线。。虽然也没怎么看懂。。。贴地址:剪枝方法多重背包代码:#include#include#includeusing namespace std;const int maxn原创 2016-11-04 20:01:08 · 667 阅读 · 0 评论 -
hdoj 5685 Problem A(逆元)
问题是求区间积。可以预处理前缀积h[i],现在要求(h[b]/h[a-1])%mod, 所以需要用到逆元-->h[b]*(h[a-1]^-1)%mod.这题求逆元的方法有很多,扩展gcd,费马小定理,线性求逆元。方法一,扩展gcd:#includeusing namespace std;const int mod = 9973;const int maxn = 1原创 2016-11-08 22:47:47 · 862 阅读 · 0 评论 -
poj 1061 青蛙的约会(扩展gcd)
设所需时间为x,由题意可以写出同余式:(mx - nx) = y - x ) (modl)所以(m-n)*x + l*y = y - x, x有解得情况是(y-x)能被gcd(m-n, l)整除。有解的话可以用扩展gcd求出x.代码:#include#includeusing namespace std;typedef long long ll;原创 2016-11-06 17:15:11 · 439 阅读 · 0 评论 -
hdoj 4549 M斐波那契数列(费马小定理降幂,矩阵快速幂)
一开始以为和斐波那契差不多,很简单的就能构造出矩阵。。。结过是乘法,硬是构造不出来。可以由F[0] = a,F[1] = b,F[n] = F[n-1] * F[n-2] ( n > 1 ) 推出fn = a^fib(n-1)*b^fib(n)%mod可知这个指数是相当大的,所以需要用费马小定理或是欧拉定理降幂。a ^ n = a ^ (n % euler ( M原创 2016-10-19 20:37:00 · 596 阅读 · 0 评论 -
51nod 1138 连续整数的和(数学)
题意:给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。(N思路:我们知道等差数列的和为首项加末项再乘以项数除以2,公差为1的可以假如首项是a,则可以写成(a+a+n-1)*n/2--->(2a+n原创 2017-05-10 23:25:40 · 664 阅读 · 0 评论 -
URAL 2070 Interesting Numbers(数学)
两个条件1、x是个素数2、因子个数是素数给出一个[L, R]的范围,求范围内满足两个条件,或者同时不满足两个条件的数的个数思路:满意的数有两人都认为有趣的:素数两人都认为没趣的:合数且因子数不为质数看样例就知道这样的数很多,不过可以求不满意的数:合数且因子数为质数把一个数质因子分解x=p1^a1*p2^a2*p3^a3..原创 2017-04-04 15:08:54 · 418 阅读 · 0 评论 -
bzoj 1008 越狱(快速幂)
题目地址:点击打开链接思路:越狱的情况比较难计算,可以计算所有情况的总数减去不能越狱的数量就是能越狱的数量。总数:m^n不能越狱的:第一个人有m种情况,第二个人是m-1种,第三个人因为只要左右不同所以也是m-1,所以推出不能越狱的人数是m*(m-1)^(n-1)取模运算:(a + b) % p = (a % p + b % p) % p原创 2017-02-23 23:28:42 · 490 阅读 · 0 评论 -
poj 1019 Number Sequence && hdu 1597 find the nth digit(二分,模拟)
两个题很相似,都是问你第i位是几,但排列的顺序有点不太一样.hdu 1597的每个单位是前一个单位后加个1-9中的一个循环添加;poj 1019的每个单位是前一个单位后加(i+1)思路都一样,想办法记录截止到某个单位其前缀一个有几位,这样就可以二分快速找出第i位在哪个单位,剩下的就好办了。poj的比较难想,需要记录原创 2017-02-27 21:42:45 · 437 阅读 · 0 评论 -
hdoj 5974 A Simple Math Problem(数学)
题目地址:点击打开链接思路:测试组数12W,暴力不用考虑了。 设gcd(x, y) = gcd, i*gcd + j*gcd = a, i*j*gcd = b; 因为i, j互质, 所以i+j, i*j互质, 所以gcd(a, b) = gcd, 所以可以联立方程i+j = a/gcd, i+j = b/gcd 从而解出i, j,再乘上gcd即为X, Y题意有个坑,没说原创 2016-12-04 22:19:17 · 440 阅读 · 0 评论 -
hdoj 5914 Triangle(规律,斐波那契)
题目地址:点击打开链接思路:要减去最少的让它不能构成三角形,可知构成三角形的条件是a+b>c,不符合的极限条件a+b=c,所以可以想到留下斐波那契数,这样就能拿最小的让它不满足构成三角形的条件。代码:#includeusing namespace std;const int maxn = 25;int fib[maxn] = {0, 1}, sum[max原创 2016-12-02 13:36:07 · 465 阅读 · 0 评论