![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论数学
文章平均质量分 68
AlmostFree
这个作者很懒,什么都没留下…
展开
-
poj 1222 高斯消元详解
题意有一个5 * 6的矩阵,每个位置表示灯,1表示灯亮,0表示灯灭。 然后如果选定位置i,j点击,则位置i,j和其上下左右的灯的状态都会反转。 现在要你求出一个5 * 6的矩阵,1表示这个灯被点击过,0表示没有。 要求这个矩阵能够使得原矩阵的灯全灭。 非诚勿扰。解析来源首先,要明确一些问题: 1.这些灯点击的顺序可以是任意的; 2.每只灯只能被点击1次,因为点击2次相当原创 2015-08-03 22:34:09 · 4371 阅读 · 6 评论 -
uva 106 Fermat vs. Pythagoras(勾股数求法)
题意:求1到n中互质的勾股数 a ^ 2 + b ^ 2 = c ^ 2的个数,和不为互质勾股数的个数。解析:知道勾股数可以表示为:(j * j - i * i) ^ 2 + (2 * i * j)^ 2 = (i * i + j * j) ^ 2.然后直接暴力就行了。代码:#include #include #include #include #i原创 2014-12-31 19:26:12 · 474 阅读 · 0 评论 -
hdu 3292 No more tricks, Mr Nanguo(矩阵快速幂解佩尔方程)
题意:给N和K,求方程:X^ 2 - N * Y ^ 2 = 1。的第K大的X值,若没有这样的X值存在,则输出balbalbalabalabla...解析:佩尔方程的求解。若N为完全平方数则无解。若有解,先暴力出佩尔方程的最小特解x1,y1,然后根据迭代公式递推可得矩阵: | Xk | - | X1 D * y1 | ^原创 2015-01-05 17:57:06 · 526 阅读 · 0 评论 -
poj 1811 + poj 2429 (Miller_Rabin大素数测试 + Pollard_Rho大合数分解)
题意:判断一个数是否是素数,若不是输出其最小因子。代码:#include #include #include #include #include #include #include #include #include #include #include #include #define LL long longusing namespace std;原创 2015-01-05 20:42:43 · 494 阅读 · 0 评论 -
uva 10277 (概率论 + 暴力)
题意:给p,q,p/q代表在只有红黑两色的几只袜子中,取到一双红色袜子的概率。求在红黑两种袜子总只数最小的情况下,红袜子与黑袜子的只数。解析:设红袜子x只,黑袜子y只。则 p / q = C(x, 2) / C(x + y, 2) = x * ( x - 1 ) / ( x + y ) * ( x + y - 1)。枚举分母中的 total = x + y,总只数从原创 2015-01-22 19:28:15 · 456 阅读 · 0 评论 -
数论入门整理(updating)
一、gcd lcm基础中的基础,一般用来处理计算第一步什么的,分数化简之类。LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } 例题:hrbust 1178 hdu 2028 Lowest Common Multiple Plus二、exgcd例题:poj 1061 + poj 2115原创 2015-02-09 10:34:36 · 1202 阅读 · 0 评论 -
hdu 2098 分拆素数和(素数筛法)
题意:求把偶数n拆成两个不同素数和的拆发有多少种。代码:#include #include #include #include #include #include #include #include #include #include #include #include #define LL long longusing namespace std;c原创 2014-12-29 21:13:15 · 477 阅读 · 0 评论 -
poj 3734 矩阵快速幂模板清晰版
题意:给n个方块排成一列,仙子阿用红蓝绿黄四种颜色的油漆给他们染色。求染成红色的方块和绿色的方块的个数同时为偶数的染色方案的个数,输出对10007取余的结果。n 解析:推出递推式子,然后用矩阵快速幂解决。P202.主要是这个矩阵快速幂写的太漂亮了。代码:#include #include #include #include #incl原创 2015-07-27 15:30:42 · 606 阅读 · 0 评论 -
hdu 2521 反素数
反素数:满足对于任意i(0反素数总结:http://blog.csdn.net/ACdreamers/article/details/25049767const int antiprime[]={0,1,2,4,6,12,24,36,48,60,120,180,240,360,720,840, 1260,1680,252原创 2015-08-07 18:54:35 · 380 阅读 · 0 评论 -
poj 1995 (快速幂) poj 3233(矩阵快速幂)
poj 1995:题意:给a,b,m,求:(A1B1+A2B2+ ... +AHBH)mod M.解析:快速幂。代码:#include #include #include #include #include #include #include #include #include #include #include #incl原创 2015-01-04 16:29:00 · 470 阅读 · 0 评论 -
uva 10169 (概率+取小数点后0的位数)
题意:有两个盒子,初始时第一个盒子里面有1个红球,第二个盒子里面有1红1白。现在每次从每个盒子里面取1个球,取完后放回,并往两个盒子里面各加1个白球。取n次,问其中至少有一次取到两个球都是红球的概率,和每次都取到两个红球的概率小数点后有几个0。解析:每次取到两个都是红球的概率:p = [1 / i] * [1 / (1 + i)] = 1 / (i * i + i)原创 2015-01-23 11:34:29 · 460 阅读 · 0 评论 -
hdu 1297 Children’s Queue(找规律+高精度)
题意不讲了,找规律。我直接算原创 2014-06-26 10:21:58 · 565 阅读 · 0 评论 -
hdu 1715 大菲波数(高精度加法)
题意求斐波那契数列的第n项。原创 2014-06-26 07:59:52 · 462 阅读 · 0 评论 -
hdu 1023 Train Problem II(catalan 大数)uva 10303 uva 991
经典的入栈时卡特兰数问题。原创 2014-06-25 22:10:25 · 497 阅读 · 0 评论 -
uva 11029 Leading and Trailing(求n^k的前几位和后几位 证明)
题意:给n,k,求n^k的前3位和后3位数字是多少。解析:知识点挺多的一道题目。首先后三位好求,直接快速幂mod 1000就出来了。要注意的是这个数可能不是3位数,所以最后输出的时候在前面补0,所以是%03d。然后时前三位的计算方法,lg大法好。设 n ^ k = t,左边取lg,取10^,得 10 ^ lg(n ^ k ) = 10 ^ (k * lg(n))原创 2015-01-05 00:02:49 · 408 阅读 · 0 评论 -
poj 3243 poj 2417 hdu 2815(解高次同余方程的应用)
高次同余方程用babystep_giantstep算法来解,具体原理学不懂,学会了怎么用。poj 3243:题意:已知x,z,k,求同余方程 x ^ y mod z = k 中的y值。代码:#include #include #include #include #include #include #include #include #inc原创 2015-01-04 14:25:59 · 549 阅读 · 0 评论 -
poj 1091 跳蚤(n元一次不定方程+斥容原理)
题意:给一张卡片,上面写着N + 1个自然数,其中最后一个数是M,并且前N个数不超过M,并允许数字相同。一只跳蚤每次可以选择从卡片上任意选择一个自然数S,向左或向右跳S个单位长度。求最后能跳到左边1个单位长度的N + 1元组个数是多少。解析:设卡片上的标号是a1,a2,a3,a4,...,an,M,跳蚤跳对应标号的次数为x1,x2,x3,x4,...,xn,x(n +原创 2015-01-05 13:29:11 · 716 阅读 · 0 评论 -
poj 1061 + poj 2115 + poj 2142 (exgcd)
题意:两只青蛙,在地球的同一纬度上,各自相对起点的初始坐标为x,y,现在他们从起点开始向同一个方向开始跳,第一只每次可以跳m,第二只可以跳n。 给这个圆的长度l,问最小第几次时,两只青蛙能相遇。 解析:1. 设当t次跳跃时两娃相遇,则第一只青蛙的坐标为:x + m * t,第二只为:y + n * t 。 所以当他们相遇原创 2014-12-29 17:25:30 · 473 阅读 · 0 评论 -
poj 1006 Biorhythms(中国剩余定理)
题意:x === p ( mod 23 )x === e ( mod 28 )x === i ( mod 33 )给p e i ,求x 。解析:23 28 33互素,所以用中国剩余定理做。用之前的解同余方程组的方法也试了试,很恶心,样例里面有0 0 0 0 这样的输入,会爆除0错。代码:#include #include #inclu原创 2015-01-04 20:19:59 · 392 阅读 · 0 评论 -
poj 2886 反素数+约瑟夫环线段树单点更新
题意:有n(5*10^5)只小朋友做游戏,每个人手上有一张卡片,上面记录着一个非零的数val。现在他们按照1~n坐成一个环。然后游戏从第k只小朋友开始,他先跳出这个圈,然后如果他手上的val为正,则下一个小朋友的位置就是他当前位置+val;相反的,如果他手上的val为负,则下一个小朋友的位置就是他当前位置-val。现在,第p次的小朋友跳出圈圈的时候他会获得f(p)个糖果,f原创 2015-08-07 21:56:34 · 418 阅读 · 0 评论 -
poj 3725 稀疏矩阵剪枝快速幂
题意:某铲屎官让一群喵星人n只(100)锻炼身体。有以下操作:g i:第 i 只喵星人拿到一颗花生。e i:第 i 只喵星人吃掉它所有的花生。s i j:第 i 只喵星人和第 j 只喵星人交换他们的花生。现在问,操作m(1,000,000,000)次以后,每只喵星人手上的花生状态是啥。m也没有大到丧心病狂的地步嘛。解析:矩阵的建立过程参照:点击打原创 2015-08-10 22:28:35 · 753 阅读 · 0 评论 -
hdu 1848 hdu 1536 博弈论sg函数入门
hdu 1848:题意:给三堆石子,数量分别是 m,n,p,每次取只能取fib数个石子,求最后谁赢。解析:学习:点击打开链接sg函数的应用。代码:#include #include #include #include #include #include #include #include #include #include原创 2015-07-23 22:28:24 · 325 阅读 · 0 评论 -
poj 1830 开关问题高斯消元
题意:给定n个灯泡。第一行给的是灯泡的初始状态;第二行给的是灯泡的终止状态。然后给定一些关系,表示按下灯泡fr,灯泡to和fr的的状态都翻转。现在要问有多少种摁开关的方法,使得灯泡从初始状态到达终止状态。解析:做过n*n的,线性的反而不会了囧- -线性的直接把关系做成矩阵去求解就行了:比如题1的关系矩阵为:1 1 11 1 1原创 2015-08-04 22:29:36 · 418 阅读 · 0 评论 -
poj 2065 高斯消元取模解方程组
题意:a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1)a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1) = f(2)......a0*n^0 + a1*n^1+a2*n^2+........+an-1*n^(n-1) = f(n)解这个方程组。代码:原创 2015-08-05 09:48:02 · 446 阅读 · 0 评论 -
poj 3185 贪心翻硬币 高斯消元
题意:有20个硬币,每次选择翻转,翻转i的时候,i-1 , i+1 都会被翻成相反面。现在给20个硬币的状态,求最少翻多少次能把这些硬币都翻成0。解析:翻两次等于没翻,从最左或者最右开始去翻就行了。这题数据好水而且很坑,没有检查越界访问都能过。。。好像hdu4200比较有学习意义。代码:#include #include #include #i原创 2015-08-03 16:15:26 · 426 阅读 · 0 评论 -
sg函数入门题
poj 2311:题意:给一个 w * h 的矩形纸片,每次可以剪一刀,谁先剪到1 * 1谁就赢。解析:用sg函数来找必胜态和必败态,然后类似记忆化搜索,不断往下找。代码:#include #include #include #include #include #include #include #include #include #inc原创 2015-07-24 20:10:49 · 778 阅读 · 0 评论 -
hdu 1028 母函数入门
题意:解析:太晚了 明天再来补题解。代码:#pragma comment(linker, "/STACK:1677721600")#include #include #include #include #include #include #include #include #include #include #include #include原创 2015-08-18 00:24:48 · 418 阅读 · 0 评论 -
hdu 4565 推倒公式+矩阵快速幂
题意求下式的值:Sn=⌈ (a+b√)n⌉%mS_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m其中: 0<a,m<2150< a, m < 2^{15} 0<b,n<2310 < b, n < 2^{31} (a−1)2<b<a2(a-1)^2< b < a^2解析令: A_n = (a + \sqrt{b}) ^ nAn=(a+b√)nA_n = (a原创 2015-08-17 15:57:50 · 396 阅读 · 0 评论 -
poj 1681 高斯消元 枚举自由元求翻转最小次
题意:给一个n*n的矩阵,初始的时候是黄或者白的。现在给染色,每个点染色的时候四周都会变黄。求最少次数给这些点染色,将整个矩阵染成黄色。解析:与上题相比,这题要求最少的染色次数。应该是上题的升级版。首先抽象建立增广矩阵,然后是枚举自由元。代码:原创 2015-08-03 23:54:58 · 452 阅读 · 0 评论 -
poj 2379 连续素数和 打表
题意:给一个数n,求有多少组连续的素数和能够凑成这个数n。代码:#include #include #include #include #include #include #include #include #include #include #include #include #define LL long longusing namespace原创 2015-08-03 12:53:53 · 483 阅读 · 0 评论 -
poj 2778 AC自动机+矩阵快速幂
题意:有m(10)个,长度最大为10的DNA序列,只包含A, T, C, G,这四个字母。这m个序列是有疾病的。然后问,有多少种长度为n(2e9)的DNA序列,不包含以上这些带疾病的序列。解析:这题的fail数组终于有卵用了!详细的解析看这篇博客:poj 2778矩阵 M[ i , j ] 表示的是从 i 到 j 只走一步有多少种走法,所以M的n次幂就代表着原创 2015-08-15 10:50:25 · 260 阅读 · 0 评论 -
poj 2411 2663 2420 dp+dfs+矩阵快速幂(1*2矩形排版次数)
从这篇博客学到很多:点击打开链接直接枚举高的状态,一旦此状态确定了,之后的状态就都确定了。poj2411:题意:给定一个长宽小于等于11的矩形,问用1×2的小矩形填满,有多少种方法。代码:#include #include #include #include #include #include #include #include #i原创 2015-08-10 20:30:48 · 689 阅读 · 0 评论 -
poj 3641 快速幂+米勒罗宾判断大素数
题意:判断一个数p是否满足:1.p不是素数;2.pow_mod(a, p, p) == a % p。代码:#include #include #include #include #include #include #include #include #include #include #include #include #define LL lo原创 2015-07-21 11:36:26 · 1656 阅读 · 0 评论 -
poj 1930 无限小数化分数
题意:无限小数化分数。转自:http://blog.csdn.net/xinghongduo/article/details/6231107代码:#include #include #include #include #include #include #include #include #include #include #include #原创 2015-07-20 18:23:04 · 385 阅读 · 0 评论 -
poj 3421 素因子个数和
题意:无法理解Xi Xi+1 and Xi |Xi+1 where a | b means a perfectly divides intob.这句话的意思。解析:网上的解析,求下面这些数,直接写求下面这些数的代码了。n可以分解成质因子的乘积。n = p1^a1 * p2^a2 * p3^a2.....pn^an.最大长度就为以上所有的质因子的个数和 a原创 2015-07-21 11:07:03 · 441 阅读 · 0 评论 -
poj 3292 筛4n+1素数
题意:给一个数h,求1-h之间的 4*n + 1 的素合数有多少。素合数的定义是 两个 4*n+1的素数之间的积。代码:#include #include #include #include #include #include #include #include #include #include #include #include #define原创 2015-07-21 11:09:23 · 765 阅读 · 0 评论 -
hdu 2588 GCD---欧拉函数
题意:求有多少 x ( 1 = m。其中(2解析:设 x = q * d, n = p * d ,且 gcd ( x, n) = d 。则 q 和 p 必然是互素的,题目要求 d >= m,所以只要找出当 d >= m时:p = (n / d ),小于p,且与p互素的数有多少个就行了,这就相当于求x有多少个了。这个数就是欧拉函数...然后求得时候肯定不是一遍原创 2015-08-02 16:01:02 · 373 阅读 · 0 评论 -
hdu 2177 博弈推状态
题意:有两堆石子,分别有a个和b个。现在两个人玩游戏,有两种拿石子方法:1.选择一堆石子,可以拿任意个;2.选择两堆石子,可以同时拿掉相同个。然后假设这俩人都很聪明,问这俩人谁胜。如果胜,输出胜利的方案。第一行是拿掉两堆石子相同个数,第二行是拿一堆石子不同个数。解析:列出sg函数的转移,会发现以下状态都是必败的:1,23,54,76,10原创 2015-08-02 18:16:54 · 360 阅读 · 0 评论 -
FZU 1402 中国剩余定理
题意:n个数(10),每行给出 mi 和 ai。代表 X % mi = ai。然后求这个X。解析:中国剩余定理。代码:#include #include #include #include #include #include #include #include #include #include #include #include原创 2015-08-02 14:42:25 · 318 阅读 · 0 评论 -
uva 424 Integer Inquiry(高精度加法模板) uva 10106 Product(高精度乘法模板)
高精度加法。代码1:#include #include const int Maxn = 110;char num[Maxn];int sum[Maxn];void add(){ int len = strlen(num); for (int i = 0; i < len; i++) { sum[i] += num[len -原创 2014-06-28 16:42:20 · 472 阅读 · 0 评论