
数论
luyuncheng
luyuncheng@sina.com
展开
-
HDU 4035 树上的期望
pps:这个是我转的,此题做了好久完全没思绪。。。网上大牛解释太过简单。。。此大牛写了详细的推导过程。相当好。我自己推了大概两大张纸才搞出来。一定要自己好好推,一步一步推过去。。。 对于有些地方我改了点http://blog.163.com/fengjie1314126@126/blog/static/96609996201181423525697/ps:只要你有信心把这篇文章看下转载 2013-10-03 13:50:52 · 1089 阅读 · 0 评论 -
uva11385
此题调得我要死了 调了3个小时的java 还是从凌晨开始 我艹!!!!!还是runtime error 我都把所有数据输出来了。我觉得是我new太多的原因但是这个不用大数new根本做不了啊 我艹。。。我真的想骂人了。。。求大神改错:import java.math.BigInteger;import java.util.Scanner;public cl原创 2013-01-12 06:13:48 · 619 阅读 · 2 评论 -
UVA11631
http://www.cnblogs.com/staginner/archive/2012/10/28/2743763.html原创 2013-01-12 22:27:08 · 511 阅读 · 0 评论 -
uva11137
此题作者将其放入了数学基础里面的讲解问题中。个人觉得这题应该是dp的<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->d[i][j]表示使用不超过i的整数的立方,累加和为j这个状态设从d【0】【0】到d【i】【j】的路径数如果暴力的话会超时。需要用到剪支。我觉得剪支就是用到dp的最优子结构。如果前面算过来就直接原创 2013-01-12 19:41:25 · 482 阅读 · 0 评论 -
uva11461
此题很简单。对于这个题目刚开始看就想要是从1到……的完全平方数都知道就好了。那么我就可以队头减队尾,但是想想那样复杂度太高了。后来就想啊如果我给出的数求sqrt不就相当于反过来求了吗。就是说sqrt后对应的数两头。然后我求出中间的数有多少个就可以了。其实就只要两头相减就可以了。这里我wa了一次。由于没有考虑两头本身的情况。即是当你sqrt=小数的时候你应该怎么取数。可以自己想想原创 2013-01-12 00:14:27 · 582 阅读 · 0 评论 -
uva11361
此题第二章的例题5由于书上没写程序我就自己做了下。由于2^31=2147483648所以最大也就10位数字。所以极限情况是数字之和不大于100.那么对于k如果超过100的那么肯定就不存在各位和是它的倍数了。这里就可以剪支,当大于等于100的时候就直接输出0就可以了。然后按照书上的思想我们设f【x】表示不超过x的非负整数中满足条件的个数,所以我们得到的答案就是f【b】-f【a-1】这一条原创 2013-01-13 15:36:28 · 1162 阅读 · 1 评论 -
uva10791
此题是最小公倍数的推理。此题考虑的情况比较多,不要漏来。我就因为漏了一个情况就傻逼了。。。可以这么想 如果这个数是素数本身那么就肯定是素数+1的答案如果这个数是1那么输出答案肯定是2如果这个数只有一个素数因子构成例如25=(5*5)那么肯定是(5*5+1)的最小和(因为要满足最小共倍数,如果只有一个素数因子那么就相当与它自己的数的各个组合相加是不变的)如果这个数有躲原创 2013-01-11 22:05:40 · 997 阅读 · 0 评论 -
uva11481
此题纠结了我一段时间了。今天在acseed的提示下我ac了。。首先题目很容易就可以想到首先算出前面C(m,k)种方案。那么就要考虑其他的n-k个位置都要不在其位置上。那么我首先想到了错排。但是不知道为什么如果这么算的话是错误的。以5,3,2为例,答案是12,但是用错排算却是6错的。我就不知道为什么了。求大神指教我上面的想法为什么错了啊。然后被提醒说是容斥原理,首先第一步还是C(m,原创 2013-01-27 00:15:03 · 867 阅读 · 0 评论 -
la5028
此题是hdu3723此题首先想有点像栈,因为最后要回到第一排。所以向上一个必然向下一个,这就有点像栈进去一个出来一个。然后呢,求组合个数。那这是不是就是卡特兰数呢?今天正好看了组合数学卡特兰数。那么上下是卡特兰数的个数,这里还有横线的个数,横线可以理解为在上下中插入横线。比方说:n=4的时候,在上的个数为1下的个数为1的时候,卡特兰数为1,那么还余下2个位置需要放横线,横线插入到里面的原创 2013-01-25 19:50:58 · 1058 阅读 · 8 评论 -
uva10237
此题黑书243页 hdu1820由于以前学校做过只有8个格子的但是思想是一致的。只是我那时候有点暴力过的这次就重新敲了一次。此题就算到30个格子也就改longlong就可以了但是把我坑死了!!!!我按照黑书的做法做了。过了网页上前面几个数据,最后一个没过。我以为是我long long 在哪些地方int转换的时候有问题我将所有的数据全换成int了。我调了好久!结果我随便交一个保存原创 2013-01-24 00:47:16 · 927 阅读 · 0 评论 -
LA2889
这里我想要说下对于公式的理解。其实这个公式是根据排列组合算出来的k位数字组成的回文数个数为 f(k)=9*10^((k-1)/2)为什么会有这个公式呢:因为我们在最高位的时候对于回文数只有9种可能选(0不能选嘛)。那么最低位同时也不能为0(回文嘛)那么剩下k-2位,对于其他位的数我就有每位10种选择。由于是回文那么我只要算到其他的k-2的一半就可一了。。由于此处最高位已经拿出来原创 2013-01-10 15:16:14 · 743 阅读 · 0 评论 -
uva10892
此题坑爹。。。我开始以为要用到什么组合公式啊或者什么技巧什么的。。。。其实 此题就是暴力!!!你求出lcm的所有因数 ,然后暴力所有的因数。just this OMG! uva10892 ORG原创 2013-01-08 23:36:56 · 938 阅读 · 0 评论 -
UVA11609
此题运用快速幂和组合公式对于选人的方案可以是:∑C(n,k)C(k,1) 其中k从1到n 所有组合数相加。对于C的公式有:C(n,k)C(k,r)=C(n,r)C(n-r,k-r)(k>=r)化简后 C(n,1)C(n-1,k-1)其中C(n,1)是常数n提出来,那么里面就是∑C(n-1,k-1)其中k从1 到n 那么这个就是组合公式的全集 也就是2^(N-1)所以原创 2013-01-08 17:32:54 · 861 阅读 · 0 评论 -
la5092
此题算是概念题吧。网上称其为dp我个人觉得是递推的数学原理这个题意就是欧拉数的概念题:在具体数学一书各个特殊的数那一章有介绍。详情请百度谷歌维基百科。递推公式: f(n,k)=(k+1)*f(n-1,k)+(n-k)*f(n-1,k-1).不含n的排列:当在该排列升序或该排列开始的位置插入n,那么升序数不变;如果在降序或最后位置插入n,那么原创 2013-01-23 20:25:24 · 656 阅读 · 0 评论 -
la4064
此题卡了我一下午一直tle 后来在jesful大神指导下,对极角排序的单调性质重新理解了下。才ac的此题用补集的性质,将钝角的部分算出来,然后用c(n,3)去剪就可以了。首先将以i点为源点的极角算出来,然后排序,确定第二个点J 在1——(n-1)那么下面的做法就有不同了。我们很容易想到枚举K点使得I J K构成的三角形是钝角。那么这样做法是o(n^3)我就是这样超时的。即使你k点的枚举原创 2013-01-23 01:48:51 · 783 阅读 · 0 评论 -
LA3516
此题放在数学基础中我觉得是不合适的 个人认为。此题明显的dpdp【i】【j】表示串i到j的树的个数。但是这里确实用到了一点点组合公式。就是在统计的时候当我们算完左边的树的时候在算右边的树那么两种情况的组合应该用乘法原理。然后因为此题是用回溯,那么回溯的终点=起点(有点回文串的意思)然后只要设置好边界条件就好了原创 2013-01-12 21:47:34 · 656 阅读 · 1 评论 -
uva10673
扩展欧几里得解线性方程此题是典型的模板题,我解得线性方程的解为某一值的时候,肯定是gcd(a,b)的倍数,只需要除去x,然后平衡p,q的系数就好了。原创 2013-01-29 00:56:24 · 665 阅读 · 0 评论 -
uva11038
此题是排列组合的好题啊! 这两天头痛的厉害。。。加上生物钟紊乱 人整个就是个虚的。。。都没什么脑筋做题了。。。。如果这次题解描述又问题请留言。。。一来我是时间紊乱睡不着又想睡觉的这个时间下写的。想到什么写什么的。所以表述就没有那么清晰了此题可以这么考虑:对于第i位的数字 为x那么如果当前数字不为0 的话我们可以这么想当前数字的左边的数字的大小是left,可以可以是从0到左边原创 2013-01-16 04:16:07 · 1217 阅读 · 0 评论 -
hdu 4349 lucas定理的推导
Lucas定理如下,是Édouard Lucas于1878年证明的定理,其数学表达式如下:For non-negative integers m and n and a prime p, the following congruence relation holds:whereandare the base p expansions of m and原创 2013-04-28 18:16:17 · 981 阅读 · 0 评论 -
poj2076
最近在看概率先A个水题。E(i,j)=1+(i*j/n/s)*E(i,j)+(i*(s-j)/n/s)E(i,j+1)+((n-i)*j/n/s)*E(i+1,j)+(n-i)*(s-j)/n/s*E(i+1,j+1);这个解释网上很多了解释下为什么是递推做。因为根据这个式子,且n有1000,如果用高斯消元的话中间变量将会非常大,就会爆掉。那么考虑到其结构是线性递推,那么就将上式化原创 2013-04-07 19:30:30 · 928 阅读 · 0 评论 -
cf83d
此题算是很容易想的。题意就是给定ab区间,然后给定一个k求k在区间中以最小因子出现的次数。那么此题很容易想到的就是,我们求出1到b的答案与1到a-1的答案然后两者相减就可以了,对于一个数其因子是p1^k1 * p2^k2 * p3^k3....pn^kn 那么对于一个k是最小因子,那么必定是素数,不然可以被其本身的因子整除。然后我们就想这个区间中有多少个这样的数,对于1到n这个区间中以k为原创 2013-04-05 22:21:11 · 607 阅读 · 0 评论 -
haoi1041
此题比较有思维。。给出勾股数性质:有a,b,c 满足 a^2 + b^2 = c^2那么(假设m > n)a = m^2 - n^2b = 2 * m * nc = m^2 + n^2有:(n,m) = 1 ,得到(a,b,c) = 1,且ka,kb,kc也满足做法就是通过由于R=k*c 然后枚举k 得到c 在通过c枚举n和m 然后用set维护两个值。最后答案*原创 2013-03-28 22:01:06 · 536 阅读 · 0 评论 -
uva10884
此题不知哪位大神用dp做出来了。。。我是没想到怎么dp用java的大数+组合数学做的,200ms可以ac。求指导dp方法啊原创 2013-02-14 22:51:31 · 1281 阅读 · 3 评论 -
uva11728
此题直接暴力就可以了8ms可以过,直接打表到1000,然后枚举1000的因子然后求和,就可以了。因为s只有1000所以很容易就得到了。然后呢由于唯一分解定理的原理,所以一个N分解只可能有一个s与其对应。所以得解原创 2013-02-15 13:24:43 · 543 阅读 · 0 评论 -
uva11529
此题求凹四边形个数num 用num/c(n,3)就可以了。求凹四边形可以转换成求凸四边形,凸四边形的统计可以是以任意点为中心的点,其中心点在三角形外面。换句话说就是存在一个点与三角形另外两个点在同一直线或者所成角>180° 这就类似于2010天津网络预赛的convex原创 2013-01-21 18:47:08 · 627 阅读 · 0 评论 -
uva11490
此题分析比较容易,直接分解因数,然后你画图就可以得到正方形边长为R=(S/K-6*K)/7其中K为S的约束,然后一个个枚举就好了。这里关键是输入有int64 所以分解这个比较麻烦,但是acseed说试除法也是可以过的400ms我想既然前段时间看了同余的后半段,就干脆用rho吧然后敲了rho,但是wa和tle一通宵 我蛋又疼了。。。。后来发现自己的rho有缺陷,在mi原创 2013-02-08 00:23:27 · 659 阅读 · 0 评论 -
hdu2841 la3720
此题是在做la3720的时候acseed大神说要我先做这个 会比较好。此题思路是利用容斥原理和最大公约数题意说从0,0开始看,显然,若(x,y)能被看到,那么(k*x,k*y),其中k>1都不能被看到。因此,问题转化为求1满足gcd(x,y)=1。那么可以从1~n枚举x,累计1~m中与x互质的个数。就可以了。还有需要说的是如果单纯的一个个比较的话会超时,因为数据范围比较大。原创 2013-01-19 15:57:34 · 1017 阅读 · 1 评论 -
la3357
此题自己模拟下就可以看出很明显的斐波那契数列的性质证明的话可以想对于一个长度为n的数其后面n-2位的数是不定的 如果第n-2位为0那么可用情况是n-1位的情况如果为1 就为n-2位的情况。可以自己画出来就明白了、然后用sum统计前面所有数的和。那么输入n的情况下就知道长度有几位了然后通过确定每个的长度就可以输出了。比方说:n=20.那么长度为6 可以确定从高位第1位从低位第六位原创 2013-01-19 12:17:47 · 677 阅读 · 0 评论 -
uva11645
此题要用大数啊。我一开始以为用longlong可以表示出来结果不行啊。。。哎。。大致上可以这么想:对于全1的情况比方说11111 那么可以将其分成4块(长度-1)11*** x1*11** x2**11* x3***11 x4那么每一块就代表有两个1连续的情况。那么这样对于其他三个地方为任意值就可以不用管了所以用组合公式就可以了4*2^3原创 2013-01-20 00:42:50 · 1030 阅读 · 0 评论 -
uva10883
此题是个组合数学的好题啊。我们模拟下这个系数就可以看出这个是杨辉三角的变形也就是用二项式系数来解。我自己模拟了下 图像是这样子的:那么我们系数就是(1+1)^n 模拟下除数就是2^(n-1) 但是我们看下此题的数据规模就知道如果先把系数求出来就知道此题行不通。因为规模到n<=50000那么单纯的先求c(n,k)(0我们可以将每个c(n,k)(0我们就要想办法原创 2013-01-16 18:36:11 · 1053 阅读 · 0 评论 -
uva11768
此题把我坑了三天。。。算上现在这个时间算是4天多那么一点点。。此题在uva上错了52次,在第53次终于ac我那个去。。。期间我居然做这道题做了一通宵。。。蛋疼心碎了。。但是不全是一通宵,从12点到第二天早上6点半,期间完了两盘游戏,看了数论的一章节书,才开始重新写这题目的此题在acseed的做法是两端找整10点,然后求gcd((x1-x2)/10,(y1-y2)/10)后来我用这方原创 2013-01-31 00:59:21 · 1413 阅读 · 3 评论 -
uva10892
求翻译。我翻译出来还是只懂个大概。。求解答这题!Consider two numbers a and b, whose prime factorizations are and, respectively. Then their LCM is This is the insight that lets us solve the problem.So factorize N:原创 2013-01-07 01:30:53 · 785 阅读 · 0 评论 -
uva11076
此题坑爹!鉴定完毕!此题我是自己做的。由于没搜到题解,只在uva的论坛上找到几组数据和提示。如果认为我的思路有问题的望大牛指正,感激不尽此题做的我蛋疼心碎脑死。。。书上给的备注:入门题。。。知识点很简单。。。。尼玛居然卡unsigned64 但是呢!!!我反正用unsigned64是没过的。。。。你们试试看如果用unsigned 64过了的求讨论!!! 我被这数据卡了一晚上,我找错找原创 2013-01-07 23:53:57 · 1578 阅读 · 3 评论 -
hdu 1568 斐波那契前四位
http://blog.youkuaiyun.com/fangzhiyang/article/details/7240062这是道神奇的题,求斐波那契数列的0到第100000000项的前四位,之前做过斐波那契数列的水题,求到63项能用__int64解决,然则到100000000项的话用数组都邑超时,所以我是一点办法没有,只有进修大牛的解法。看了下网上的题解,大牛们用的都是下面这个公转载 2012-09-13 01:46:29 · 831 阅读 · 0 评论 -
poj2478 法雷级数 递推法求欧拉函数
一个法雷序列fn中数的个数就是分别与2,3,4,5,6…..n-1,n互素的数的个数和,继而就是求从2到n连续的欧拉函数值的和 #include#define maxn 1000000using namespace std;long long a[maxn+1];int main(){ int i,j; for(i=1;i<=maxn;i++) a[i]=原创 2012-09-29 23:07:48 · 1427 阅读 · 0 评论 -
原根 poj 1284
题意:一个集合{(X^i mod p} | 1与集合 {1 ,2 ,……, p-1}是相同的原根定义 原根Primitive Root。 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数) 假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,且有 1那么g可以称为是P的一个原根,归根到底就是g原创 2012-09-29 22:48:19 · 896 阅读 · 0 评论 -
poj2407 欧拉函数
#includeusing namespace std;int eular(int n){ int rea=n; for(int i=2;i*i<=n;i++) if(n%i==0) { rea-=rea/i; while(n%i==0) { n/=i; } } if(n>1) rea-=rea/n; return rea原创 2012-09-29 22:26:16 · 573 阅读 · 0 评论 -
hdu1164筛选法对整数分解
#include#include#define N 65536using namespace std;int prime[N],nprime;bool isprime[N];void init(){ int i,j; nprime=0; memset(isprime,0,sizeof(isprime)); isprime[1]=1; for(i=2;原创 2012-09-29 22:09:21 · 814 阅读 · 0 评论 -
Poj2142解不定方程——一元线性同余
题意:有一天平质量为a和b的砝码已知砝码数量不限且天平左右均可以放砝码,现在要求用天平称出c的物品各需要多少解析:转化为ax+by=c的一组整数解(x,y)要求|x|+|y|尽量小利用扩展欧几里得求出特解x0 和 y0然后给出通项公式x=x0+a/d*t y=y0+b/d*t 对于方程的全部解x=x0+(a/d)t y=y0+(b/d)*t |x|+|y|原创 2012-09-29 17:52:07 · 1558 阅读 · 0 评论 -
hdu 1164 试除法对整数分解
#include#include using namespace std;void divide(int n){ int i,ct=0; for(i=2;i<=sqrt(n+0.0);i++) { while(n%i==0) { ct++; if(ct!=1) printf("*"); printf("%d",i);原创 2012-09-29 21:56:43 · 838 阅读 · 0 评论