数论
文章平均质量分 75
happy_lcj
nothing
展开
-
hdu 1398 Square Coins(母函数,完全背包)
题意:有17种货币,面额分别为i*i(1<=i<=17),都为无限张,给定一个值n(n<=300),求用上述货币能使价值总和为n的方案数 分析:这题可以用母函数的思想,对300以内的值进行预处理即可也可用完全背包思想求300以内的方案数原创 2014-07-30 17:32:23 · 1317 阅读 · 0 评论 -
UVa 674 & hdu 2069 Coin Change (母函数,dp)
题意:有5中货币,价值分别为 50-cent, 25-cent, 10-cent, 5-cent,1-cent,数量都为无限个,给定一个数 n,求用上述货币组成价值为 n 的方法有多少?分析:因为n母函数 或 dp 打表对于dp状态方程为: dp[j]+=dp[j-c[i]]#includeint c1[7500],c2[7500],w[5原创 2014-08-08 16:19:03 · 926 阅读 · 0 评论 -
poj 3292 Semi-prime H-numbers (筛选法思想)
题意:一个H-number是所有的模四余一的数,如 1,5,9,13,17,21...H-primes数是H-number数(1除外),且它的H-number因子除了1只有它本身,如5,9,13,17,21...但65是H-number数,却不是H-primes数,因为 65=5*13.H-semi-prime是H-number数,且等于2个H-primes的乘积.如65给你一个数n,问1到n有多少个H-semi-prime数分析:用筛选法的思想,将H-primes筛选出来,同时标记在范围内两个H原创 2014-09-13 16:45:17 · 1045 阅读 · 0 评论 -
poj 1845 Sumdiv (同余定理,快速幂取余)
题意:求A^B的所有因子的和对9901取余后的值如:2^3=8,8的因子有 1,2,4,8,所有和为15,取余后也是15应用定理主要有三个:(1)整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式。 A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn) 其中pi均为素数原创 2014-11-04 08:44:37 · 1295 阅读 · 0 评论 -
算法总结之求解模线性方程组
1)求解模线性方程 ax = b(mod n) 方程ax = b(mod n) -> ax = b + ny ->ax - ny = b -> ax + n (-y) =b 其中a,n,b已知。 可用扩展欧几里得来求解该方程的一组特解。 这里给出下列几个定理用来求解方程: 1.当且仅当d|b时,方程ax = b(mod n)有解。d=gcd(a,n) 2.ax = b原创 2014-11-04 15:41:33 · 3482 阅读 · 0 评论 -
poj 2891 Strange Way to Express Integers (解模线性方程组)
题意:有一个数x,给定k组ai和ri,使得x%ai=ri 求x最小为多少分析:求解模线性方程组 x = a1(mod m1) x = a2(mod m2) x = a3(mod m3) 先求解方程组前两项。 x=m1*k1+a1=m2*k2+a2 -> m1*k1+m2*(-k2)=a2-a1原创 2014-11-05 15:16:05 · 929 阅读 · 0 评论 -
poj 2635 The Embarrassed Cryptographer (同余定理,筛选法)
题意:给定一个大数k,k是两个大素数的乘积的值,再给定一个int内的数L 问这两个大素数中最小的一个是否小于L,如果小于则输出这个素数。分析:因为k达到了10^100,只能用字符串读入,再转化为千进制,用int数组存储, 然后枚举小于L的素数,看是否能被整除,即判断k%L是否为0, 这样就得先用筛选法求素数打表,但是注意要打表到大于10^6 关于高精度取余,就需要用到同余定理原创 2014-11-05 15:34:57 · 937 阅读 · 0 评论 -
poj 2115 C Looooops (解模线性方程)
题意:对于C语言的循环语句for(i=A ; i!=B ;i +=C), 问在k位存储系统中循环几次才会结束。若在有限次内结束,则输出循环次数,否则输出死循环。注:利用了 k位存储系统的数据特性进行循环(会溢出)原创 2014-11-05 14:48:47 · 1029 阅读 · 0 评论 -
poj 1026 Cipher (置换群)
链接:poj 1026题意:给定n个大小1-n的不同的整数作为密钥,给定一个字符串, 求将该字符串经过k次编码后的字符串分析:暴力求解会超时,可以利用置换群的知识解题置换群:一个有限集合的一一变换叫做置换,一对对置换组成了置换群。对于一个集合a(a[1],a[2],a[3]...a[n]) 通过置换可以变成 (b[a[1]],b[a[2]],b[a[3原创 2015-01-29 17:18:38 · 1335 阅读 · 0 评论 -
hdu 1171 Big Event in HDU(母函数)
题意:这题可以理解为n种物品,每种物品的价值和数量已知,现要将总物品分为A,B两部分,使得A,B的价值尽可能相等,且A>=B,求A,B的价值分别为多少分析:这题可以用母函数的思想解,不过求的不是方案数,而是判断尽可能接近总价值的一半的方案是否存在.也可以用背包思想,每种物品的价值和数量已知,可以将总价值的一半作为容量,求最大价值,也就最接近所求值了原创 2014-07-30 17:04:26 · 1026 阅读 · 0 评论 -
母函数
在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。我们首先来看下这个多项式乘法:由此可以看出:1.x的系数是a1,a2,…an 的单个组合的全体。2. x^2的系数是a1,a2,…a2的两个组合的全体。………原创 2014-07-30 16:26:11 · 1035 阅读 · 1 评论 -
poj 2318 TOYS & poj 2398 Toy Storage (叉积)
链接:poj 2318题意:有一个矩形盒子,盒子里有一些木块线段,并且这些线段坐标是按照顺序给出的,有n条线段,把盒子分层了n+1个区域,然后有m个玩具,这m个玩具的坐标是已知的,问最后每个区域有多少个玩具分析:从左往右,直到判断玩具是否在线段的逆时针方向为止,这个就需要用到叉积,当然可以用二分查找优化。叉积:已知向量a(x1,y1),向量b(x2,y2),axb=x1*y2-原创 2014-08-01 08:18:05 · 999 阅读 · 0 评论 -
poj 1265 Area(pick 定理)
链接:poj 1265题意:从原点出发,给出一些dx,dy移动增量,最终形成一个多边形,求多边形内部的格点数目,边上的格点数目 ,以及面积。补充知识:1、以格子点为顶点的线段,覆盖的点的个数为gcd(|dx|,|dy|),其中,|dx|,|dy|分别为线段横向增量和纵向增量。2、Pick定理:设平面上以格子点为顶点的多边形的内部点个数为a,边上点个数为b,面积为S,则 S原创 2014-08-01 08:49:49 · 1612 阅读 · 1 评论 -
sdibt 1996 原来是费马定理!
定理:一个奇素数z可以表示成z=x^2+y^2的形式,当且仅当z可以表示成4*t+1的时候原创 2014-07-10 17:23:28 · 790 阅读 · 0 评论 -
快速幂取余
求a^b mod c 算法1.首先直接地来设计这个算法:int ans=1, i;for(i=1;i<=b;i++) ans*=a;ans%=c;这个算法的时间复杂度体现在for循环中,为O(b).这个算法存在着明显的问题,如果a和b过大,很容易就会溢出。那么,我们先来看看第一个改进方案:在讲这个方案之前,要先有这样一个公式:a^b mod c=(原创 2014-07-29 15:25:51 · 2957 阅读 · 0 评论 -
poj 1061 青蛙的约会(扩展欧几里得)
链接:poj 1061解题思路:扩展欧几里德应用:求方程Ax+By=C的一组解(x0,y0)。 设青蛙跳t次相遇,由题意可得方程: x+mt=y+nt+CL --> x-y=(n-m)t+CL 且 (x-y),(n-m),L已知.就是求满足方程的最小正整数解t。定理:设a,b,c为任意整数。若方程ax+by=c的一组整数解为(x0原创 2014-07-28 17:12:24 · 1321 阅读 · 0 评论 -
扩展欧几里得
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。递归代码:__int64 gcd(__int64 a,__int64 b){ return b==0?a:gcd(b,a%b);}扩展欧几里得基本原创 2014-07-28 16:44:54 · 1114 阅读 · 1 评论 -
poj 2187 Beauty Contest(凸包)
链接:poj 2187题意:已知平面的一些点的坐标,求最远两点的距离的平方值。分析:这题题意很简单,但如果直接枚举肯定会超时,不过可以转化为求凸包,因为最远两点肯定为它们的凸包的两个顶点,这样枚举凸包上的点求距离,时间就大大减少了原创 2014-08-04 08:24:25 · 942 阅读 · 0 评论 -
中国剩余定理
中国剩余定理介绍 在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数原创 2014-07-29 11:57:51 · 1772 阅读 · 4 评论 -
poj 1113 Wall (凸包)
题意:给定多边形城堡的n个顶点,绕城堡外面建一个围墙,围住所有点,并且墙与所有点的距离至少为L,求这个墙最小的长度思路:最小长度=城堡顶点构成的凸包的总边长+半径为L的圆的周长先用Graham算法求出凸包,再枚举其顶点求两两之间的边长,记得加上第一个顶点和最后一个顶点的边长最后要输出四舍五入的整数结果,可以用double存,最后用%.0lf输出原创 2014-08-04 15:23:36 · 1130 阅读 · 0 评论 -
poj 2947 Widget Factory (高斯消元,解模线性方程)
题意:生产一些零件,已知零件种数,记录条数记录只记录了某次生产从周几开始,周几结束,以及生产了哪些产品。每件商品生产所需天数为3-9天。求每样产品需要多少天才能完成。若无解输出Inconsistent data.有无穷解输出Multiple solutions.有唯一解,输出其解原创 2015-01-29 15:09:57 · 1674 阅读 · 0 评论