数论
文章平均质量分 78
ok_again
起步级菜鸟
展开
-
hdu1695 (容斥原理)
转自:http://blog.csdn.net/shiren_bod/article/details/5787722#commentshttp://acm.hdu.edu.cn/showproblem.php?pid=1695题意:已知给定k,x,y求 1 大体思路: 枚举[1..y]中每个数i 判断[1..min(x,i)]中有多少数与i互质,统计个数。(注意转载 2013-06-04 17:23:11 · 807 阅读 · 0 评论 -
poj 2891 Strange Way to Express Integers
线性同余方程模板。求x满足,x%ai = ri。#include#include#include#include#include#include#include#define LL long long#define REP(i, n) for(int i = 0; i < n; i ++)#define CLR(a, b) memset(a, b, sizeof(a))us原创 2013-12-02 12:02:32 · 925 阅读 · 0 评论 -
hdu 3292 No more tricks, Mr Nanguo
佩尔方程+矩阵快速幂。先暴力求出佩尔方程的特解(最小解),然后利用佩尔方程的矩阵递推式,推出第k项。 #include#include#include#include#include#include#include#define LL long long#define REP(i, n) for(int i = 0; i < n; i ++)#defin原创 2013-12-02 15:09:55 · 1107 阅读 · 0 评论 -
poj 2154 Color
Polya + Euler优化。由于n太大,所以需要用Euler优化。设L = n / gcd(n, i),t = i / gcd(i, n),则gcd(L, t) = 1.又有i sum(Euler(L) * pow(n, n / L - 1))。#include#include#include#include#include#include#incl原创 2013-12-02 11:26:16 · 1255 阅读 · 0 评论 -
poj 2480 Longge's problem
欧拉函数 或 积性函数应用。显然,我们设L = n / gcd(i, n) ,t = i /gcd(i, n)。则gcd(L, t) = 1;于是,gcd(i, n) 的个数为phi(L)。于是题目就可以用欧拉函数求解了。#include#include#include#include#include#include#include#include#define LL lon原创 2013-12-03 10:36:50 · 1223 阅读 · 0 评论 -
hdu 2462 The Luckiest number
欧拉定理。这道数论题好凶残啊! 首先,由题意可以得出,(10^x - 1)/ 9 * 8 = L * p(p是一个未知数,但必定是整数)。 然后对上式进行移项处理,得:(10^x - 1) = 9 * L * p / 8。 设m = 9 * L / gcd(L, 8),则有(10^x - 1) = m * p'。p’是必然存在的原创 2013-12-02 17:44:05 · 1481 阅读 · 0 评论 -
poj 2462 Period of an Infinite Binary Expansion
欧拉定理。根据分数转换成2进制的过程,分子每次都乘2。对于循环节x,当2^x = 1(mod b)时肯定是循环节。显然当分母不能整除2的时候,即分母和2互质的话,就可以利用欧拉定理,使得2^(Euler(b)) = 1(mod b)。然后对于Euler(b),枚举其因子,找到最小循环节就可以了。原创 2013-12-02 18:40:06 · 1010 阅读 · 0 评论 -
LA 3485 Bridge
自适应辛普森公式模板。#include#include#include#include#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))using namespace std;double a;double F(d原创 2013-12-04 18:30:27 · 1042 阅读 · 0 评论 -
康拓展开及应用
转载自:令羽康拓展开及应用 题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序. 现在任给一个排列,求出在它后面的第i个排列.这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展开。(1)康拓展开 所谓康拓展开是指把一个整数X展开成如下形式: X=a[n]*(n-1)!+a[转载 2014-03-08 13:40:20 · 865 阅读 · 0 评论 -
hdu 4651 Partition (利用五边形定理求解分割数)
以下内容摘自维基百科:五边形数定理[编辑]五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性[1] [2]。欧拉函数的展开式如下:亦即欧拉函数展开后,有些次方项被消去,只留下次方项为1, 2, 5, 7, 12, ...的项次,留下来的次方恰为广义五边形数。其中符号为- - + + - - + + .....若将上式视为原创 2014-05-08 11:07:41 · 1127 阅读 · 0 评论 -
A^x = A^(x % Phi(C) + Phi(C)) (mod C)的若干证明(ORZ......)
【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】以下内容全部原创,转载请注明作者 : AekdyCoin 以及本文地址曾经看过如下一个公式:以上的公式如果第一次见到,难免有不少疑惑:为什么可以这么写?限制条件为什么是x >= Phi(C),这个公式为什么正确?今天突发奇想,在纸上YY以转载 2014-07-18 12:15:30 · 765 阅读 · 0 评论 -
数论模板
Poj 3150 Cellular Automaton(矩阵快速幂, 循环矩阵快速幂)模板部分:#define LL long long #define FF(i,n) for(i=0;i<n;i++) LL f[N]; LL ans[N]; LL init[N]; LL buf[N]; void matrixMul(LL a[N],LL b[N],LL原创 2013-10-31 15:46:38 · 1477 阅读 · 0 评论 -
HDU 3758 Factorial Simplification
数论。题目要求把一个阶乘式化简成另一个阶乘式。 首先,对于第一个阶乘式我们要判断式子算出来是不是整数,第二问是如果是整数的话能否分解成第二种阶乘式的形式,系数t不用考虑,如果能的话输出第二种阶乘式。对于第一问,因为q和p都比较小,只有10000的样子,这样的话我们可以分别统计一下分子分母中每个数字都出现了多少次,然后把所有的数字都质分解,因为这样的分子分母都成为了质因数相原创 2013-11-23 13:43:54 · 1292 阅读 · 0 评论 -
ZOJ 2320 Cracking' RSA
其次布尔线性方程组,高斯消元。这道题目的关键部分是看的神牛watashi的思路。另附上watashi的思路我把他的java模板翻译成了C++的了。。。存起来以后当模板用。。。a[i][j]表示第i个数含有质数p[j]的个数,奇数个的话就是true,偶数个就是false。这样的话对于布尔方程组有,能被完全消掉的数就可以和用来消去这个数的数组成一个完全平方数。这样的话就是找多少个数能够被完原创 2013-10-31 18:18:21 · 1680 阅读 · 0 评论 -
UVALive 6170 Esspe-Peasee
扩展欧几里得算法,给出a,b, c 求满足a * x + b * y = c 且 a >= 0, b >= 0, a + b 最小。注意格式问题,因为格式wa了无数遍。。。汗。。。#include#include#include#include#include#include#include#include#include#include#inclu原创 2013-08-20 10:20:19 · 1445 阅读 · 0 评论 -
矩阵快速幂模板
#define N 555#define FF(i,n) for(i=0;i<n;i++)int f[N];int ans[N][N];int init[N][N];int buf[N][N];void matrixMul(int a[][N],int b[][N],int n,int mod){ i原创 2013-05-22 15:28:44 · 817 阅读 · 0 评论 -
UVALive 4727 Jump
大白书习题,为约瑟夫变形问题。给你n个数组成一个环,从第k个元素开始删除,每隔k个元素删一个。。。 经典的约瑟夫问题是求最后一个剩余的元素,可由递推公式 f[1] = 0, f[n] = (f[n - 1] + k) % n(下标0~~n-1,公式证明请见百度百科)得到。该题是让输出最后三个被删除的元素,其实该递推公式表示意思是:最后删除的那个元素时,有且仅有那个元素,然后一层一层递原创 2013-08-18 12:38:25 · 1258 阅读 · 0 评论 -
hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)
质分解 + 简单计数。当时去比赛的时候太年轻了。。。这道题都没敢想。现在回过头来做了一下,发现挺简单的,当时没做这道题真是挺遗憾的。这道题就是把lcm / gcd 质分解,统计每个质因子的个数,然后就可以统计出总数了。 统计的时候假如有2个3,这样的话肯定是有一个元素是含有全部的2个3的,也肯定有一个元素没有3,于是我们就可以直接得出,统计个数为元素个数x6, 然后每个质因子分原创 2013-08-30 11:58:47 · 3673 阅读 · 1 评论 -
HDU 4405 Aeroplane chess
求期望,倒着推比较容易算,避免了求最后一步到达地超过n时期望的计算。。。然后注意如果两点之间有传送门的话,期望的一样的。整个过程大概是马尔可夫过程。。。#include#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))#def原创 2013-09-05 17:57:20 · 1117 阅读 · 0 评论 -
hdu 1695 GCD
容斥原理 + 欧拉函数 或 莫比乌斯反演。莫比乌斯反演要比容斥原理快的多。。先说一下容斥原理的思路吧。其实容斥原理方法挺暴力的,本来一直想一次容斥就把结果算出来的,未果。。然后没办法了想到,对于每一个c b),然后相加就行了。注意case组数有3000之多,所以要先把每个数质因子初始化出来,不然会超时!原创 2013-09-26 22:43:21 · 1060 阅读 · 0 评论 -
hdu 4746 Mophues
莫比乌斯反演。先初始化出所有数有多少个质因子和mobius。然后处理mob_sum[ i ][ j ],表示当公因子的因子个数小于等于 j 个的mobius前 i 项和。然后分块求和即可。 分块处理部分见(不会莫比乌斯反演的同学也可以去这里学一下)http://wenku.baidu.com/view/fbe263d384254b35eefd34eb.html。#inc原创 2013-09-30 20:02:44 · 2230 阅读 · 0 评论 -
HDU 4407 Sum (容斥原理)
这题难点就是看出来用容斥原理做,可以先分析时间复杂度大致确定用我已知的数据结构做不了。。。我们会发现刚开始数据是1-n,如果不做任何修改的话,只查询的话的确可以用容斥原理做,就是把p质分解,然后没有p质因数的元素就是与p互质的元素,于是就很容易用容斥原理做了。但是有了修改操作,我们发现一旦做出了修改就没办法用上述方法做了。但是仔细考虑发现修改次数最多不会超过1000,于是我们可以先用容斥原理算出未原创 2013-09-05 17:52:00 · 1328 阅读 · 0 评论 -
HDU 4059 The Boss on Mars(容斥原理)
容斥原理,先把 n 质分解,利用x^4 的前n项和公式,然后把与 n 不互质的数的和求出来然后减一下就可以了。#include#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))using namespace std;c原创 2013-09-16 19:18:20 · 1081 阅读 · 0 评论 -
SPOJ NWERC11A Binomial coefficients
组合数单调性+二分。这道题犯了一个很二逼的错误,调了很久很久才能AC。。。好无语啊,以后要细心些了。看到这题的第一反应是,不会做。。。但是后来仔细想了想,其实我们很容易发现,对于其中的满足的情况C(n, k),我们只需要求k 但是要是这样写的话我们发现,即使k 小于30,在相乘的时候也会超long long。怎么办呢?仔细想想,我们可以用二分求出小于6的情况(单独这样求原创 2013-10-26 22:05:52 · 1125 阅读 · 0 评论 -
卡特兰数
转载自:幽兰止水什么是Catalan数说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是我们从中取出的就叫做第n个Catalan数,前几个Catalan数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845转载 2013-10-22 21:16:17 · 837 阅读 · 0 评论 -
hdu 5322 Hope(分治+NTT)
分治+NTT。思路是多校题解上的思路,我只是敲了一遍代码。下面图片引用自:http://blog.sina.com.cn/s/blog_15139f1a10102vo6q.html由于给定MOD是一个质数,并且998244353=119*2^23 + 1,所以可以用NTT直接代替FFT。//#pragma comment(linker, "/STACK:1024000000,1原创 2015-08-05 18:22:25 · 1377 阅读 · 0 评论