
数论
二分查找
这个作者很懒,什么都没留下…
展开
-
hdu5319(求素数+威尔逊定理)
题意:这题就是求 (n-1)!modn(n−1)! mod n如果nn为合数,显然答案为0.如果nn为素数,那么由威尔逊定理可得答案为 n-1n−1注意有个trick为 nn = 4.原创 2015-08-21 15:17:28 · 620 阅读 · 0 评论 -
uva11388(水题)
题意:给出 G, L;求两个数字最大公约数为G,最小公倍数为L;多组求最小的;思路:因为最大公约数和最小公倍数肯定是倍数;所以如果G,L不成倍数就误解;否则答案就是G,L;#include #include #include using namespace std;#define ll long longll G, L;int main原创 2015-08-11 10:14:05 · 533 阅读 · 0 评论 -
uva11428(数论+二分)
题意:给出n,求n=x^3 - y^3 的最小的(x,y);思路:一直想要推出公式,或者找到规律,后来看了题解,原来数论有时候也是要靠枚举的,虽然是二分枚举;首先我们第一步把这个式子分解一下x^3 - y^3 = (x-y)(x^2 + xy + y^2);因为n 因为x>y,所以(x^2 + xy + y^2) > 3y^3;所以y的范围是0到60;原创 2015-07-28 14:49:51 · 421 阅读 · 0 评论 -
uva11722(概率)
题意:两个人到达车站的时间分别是t1-t2, s1-s2;并且到站后停留w分钟.问相遇的概率;思路:高中数学学过这个问题;首先是x轴取t1, t2,y轴取s1,s2画四条线,围出的矩形就是全集,即所有可能行;然后两个人要相遇,则到站时间只能相差w以内;所以画两条直线y = x + w ; y = x - w;两条直线在之前的矩形中,夹在中间的面积,就是相遇的可能;原创 2015-07-27 09:28:26 · 1028 阅读 · 0 评论 -
uva1073(数论)
题意:一个边平行与坐标轴的多边形,可以通过描述角的方式来表示,R表示90度,O表示270度,现在给出序列的长度L,问可以构造出多少种不同的多边形,要求构造出来的多边形在内部有一点可以看到边界的每一个点(我的理解应该是凸多边形)。思路:首先确定是一个凸多边形,所以不可能有两个O相邻,并且在整个序列中,要有4个的RR(即两个R相连,用于转向),所以R的个数应该比O的个数多4,一个O再一个R等于原创 2015-07-25 10:08:22 · 466 阅读 · 0 评论 -
uva11538(数论)
题意:给一个n*m的棋盘,放两个互相攻击的皇后,有几种方法;思路:同一行攻击,和同一列攻击都很好算;就是对角线有点麻烦对角线:2*(2*(A(2,2)+A(3,2)+A(4,2)+…+A(m-1,2))+A(m,2)*(n-m+1))n小于m时交换,这样就避免分类因为两条对角线对称,所以直接乘以2对角线上面的个数:2,3,4,…m-1,m原创 2015-03-26 18:15:42 · 422 阅读 · 0 评论 -
uva10105(数论多项式展开公式)
题意:多项式(x1+x2+...+xk)^n.输入n和k(0输出多项式(x1+x2+...+xk)^n展开后的(x1)^n1*(x2)^n2...(xn)^nk这一项的系数。思路:网上看的多项式定理的公式 (a + b + c + ... + f) ^ n = (n! / (k! * d! * j! * ... * z!)) * a^k * b^d * c^j原创 2015-01-24 11:31:22 · 5795 阅读 · 1 评论 -
uva10375(数论)
题意:给出p,q,r,s;然后按照所给公式算出C(p,q)和C(r,s);输出C(p,q)/C(r,s);思路:首先直接算的话会超出范围;我们通过看公式可以知道,分子分母个数是一样的;比如10! / (5!*(10 - 5)!)那么我们可以选择把5!和10!对消,或者(10 - 5)!和10!对消;反正剩下的个数都是一样的,分子是10*9*8*7*6;分母是5*原创 2015-01-25 20:07:50 · 501 阅读 · 0 评论 -
uva1388(数学)
题意:题目的意思就是在周长为10000的圆上,有n个雕像,等距离摆放着,现在要在加入m个雕塑,为了让这n+m个雕塑还是等距离摆放,要移动之前的n个雕塑,问移动距离和最小多少;思路:首先我们可以知道,把某个雕塑作为原点不动,则每个雕像都有自己的坐标,在将m个雕塑放进去后,就有了m+n个新坐标,则把每个原来的坐标移到离他最近的新坐标上,就是最小移动距离;而这个距离怎么算呢,因为新的点总原创 2015-01-24 11:10:42 · 678 阅读 · 0 评论 -
uva11300(数学)
题意:n个人围成一圈,每个人都有一些硬币,,每个人只能给左右相邻的人硬币,问最少交换几个硬币,使每个人硬币一样多;思路:首先要求出平均数M,每个人的硬币为numi;那么对于1,他能给予4号x1个硬币,并从2号出得到x2个硬币,那么对于1可得numi - x1 + x2 = M;同理可得numn-xn+x1 = M就能得到:x2 =x1-C1 (C1 = n原创 2015-01-24 10:33:49 · 970 阅读 · 0 评论 -
uva11176(dp + 概率)
题意:有n场比赛,每场赢的概率是p,问连续赢的期望值思路:f[i][j]表示的是第i次,连续赢的次数不超过j的所有情况的概率。如此以来 f[i][j] = f[i - 1][j]在扣掉不是该状态的情况的概率,即为多赢了一盘之后连续的情况超过j的情况,该情况只在末尾有j个连续赢的情况出现,所以要扣掉f[i][j] = f[i - 1][j] - f[i - 1 - j - 1][原创 2015-02-05 20:19:31 · 406 阅读 · 0 评论 -
uva557(概率)
题意:有2n个人,有两种#include#includeconst int N = 50005;int n;double p[N];void init(){ p[1] = 1.0; for(int i = 1 ; i < N ; i++) { p[i + 1] = (1 - 0.5 / i) * p[i]; }}int main() { init();原创 2015-02-04 00:08:52 · 861 阅读 · 0 评论 -
uva10791(数论)
给出一个数字n.然后你要找出2个或2个以上的数字.使这些数字原创 2014-12-28 14:54:28 · 620 阅读 · 0 评论 -
uva12111(数论-2进制)
题目的意思就是给出一个数字把它转化成-2进制.n = b0 + b1(-2) + b2(-2)2 + b3(-2)3 + ...首先我们可以最直接先把它转化过来.就是求余-2,在除以-2,一直到除完为止,就得到了一个-2进制的数.但是这个数里面出了1,0还有-1;所以我们要把-1消掉.如果我们把-1变成1,那么原本减掉的值就变成加了,就多加了两个,那么就要给它扣原创 2014-12-28 13:30:28 · 448 阅读 · 0 评论 -
uva11889(GCD,LCM)
题意:LCM(A,B) = C;已知A,C,求最小的B;思路:设X为GCD(A,B);那么C = A * B / X;所以我们先C/A 然后通过乘以公约数,乘回来:#include #include #include using namespace std;int A, B, C;int main() { int t; scanf("%d原创 2015-08-11 14:18:42 · 479 阅读 · 0 评论 -
uva11752(合数)
题意:如果一个数可以表示成两个或以上的数的幂,就是超级幂;例如64 = 8^2 = 4^3;求1到2^64-1所有的的超级幂;题目没有输入;思路:所有数的合数(不是素数就是合数)次幂,都是超级幂;所以求所有每个数的合数次幂;要注意溢出的边界,和判重;#include #include #include #include using names原创 2015-08-11 20:22:37 · 1013 阅读 · 0 评论 -
uvalive5009(三分)
题意:给出n个二次方程ax^2 + bx + c的a,b,c;然后要求一个x,使x代入所有方程的解的最大值最小;思路:因为这个这个值的变化是一个抛物线,所以不能二分,要用三分;#include #include #include #include using namespace std;const int N = 10005;int a[N], b原创 2015-08-11 09:37:11 · 435 阅读 · 0 评论 -
uva11361(数论DP)
题意:基本是看了大白上的思路,然后还参考了http://blog.youkuaiyun.com/lenleaves/article/details/9104417统计大于等于a,小于等于b,每一位之和可以被k整除,且本身也能被k整除的数的数量。用f(d,m1,m2)表示剩余d个数字,这d个数字之和模k为m1,这d个数字组成的整数倍k整除之后余m2, 这样的数字的数量,求原创 2015-07-25 08:36:32 · 1184 阅读 · 1 评论 -
uva10828(高斯消元)
题意:从每个结点出发到每个后继结点的概率均相等;当执行完一个没有后继结点后,整个过程停止;程序从编号为1的结点开始执行;你的任务是对于若干个查询点,求出每个结点的期望执行次数;思路:本来以为又是一个求普通求期望的题,像之前一样迭代求解就行了;后来发现有无穷大的解,看了大白,发现要高斯消元;线性代数又忘得很厉害了;代码基本照着敲的;#include原创 2015-08-02 21:23:03 · 695 阅读 · 0 评论 -
uvalive3516(DP)
题意:给出一种遍历多叉树的方式,就是总是向左,左走不同往回走,然后向右,遍历完整棵树,并回到原点;图上五棵树的遍历结果都是ABABABA;现在给出一个字符串,问能表示几棵树;思路:首先如果我们要算一个字符串ABABABA的组成树的数量,我们可以通过计算它的子树,即组成AB的棵树乘以组成ABABA的棵树,然后找到所有的组合方式加起来;那么就可用dp,因为要回到原创 2015-07-22 21:47:31 · 543 阅读 · 0 评论 -
uva11404(数论_三角形计数)
题意:给出一个数字n,代表有长度为1到n的n根木棍;问组成三角形的方法有几种;思路:我们先求最长边为x的三角形有几个,设剩下两个边为y,z;那么可以知道y+z>x;所以当y的2时,只有一个解,即z = x - 1;当y = 3时,有两个解,z = x- 1和z=x- 2;一次类推可以知道他有1+2+3+...+(x - 2) = (x - 1)(x - 2)原创 2015-07-22 19:35:59 · 525 阅读 · 0 评论 -
uva11542(高斯消元)
题意:给定一些数字,保证这些数字质因子不会超过500,求这些数字中选出几个,乘积为完全平方数,问有几种选法思路:对每个数字分解成质因子后,发现如果要是完全平方数,选出来的数字的每个质因子个数都必然要是偶数,这样每个质因子可以列出一个异或的方程,如果数字包含质因子,就是有这个未知数,然后进行高斯消元,求出自由变量的个数,每个自由变量可以选或不选,这样的情况就是(2^个数),然后在原创 2015-08-03 11:18:30 · 1089 阅读 · 0 评论 -
uva11806(数论)
题意:要将k个棋子放到n*m的棋盘上,求要求第一行,第一列,最后一行,最后一列必须要有棋子,问有几种放法;思路:大体的思路就是求出所有的放法,然后减掉不符合的放法;所有的放法就是C(n*m, k) ;那么第一行没有的放法就是C((n-1) * m, k)那么我们一共就16种情况;第一行的状态,第一列的状态,最后一行的状态,最后一列的状态,4个状态一共16种组合,我们可以用状原创 2015-07-22 21:10:39 · 940 阅读 · 1 评论 -
uva1386(矩阵快速幂)
题意:一个细胞自动机,有n个格子,每个格子的取值为0~m-1。给定距离d,每次操作后每个格子的值将变为到它距离不超过d的所有格子在操作之前的值之和除以m的余数。思路:矩阵快速幂#include #include #define ll long longconst int N = 505;int n, M, D, K;struct Mat { ll原创 2015-07-31 16:35:56 · 655 阅读 · 0 评论 -
uva10870(矩阵快速幂)
题意:f(n) = a1 *f(n - 1) + a2 *f(n - 2) + a3 *f(n - 3) + … + ad* f(n - d), n > d.求f(n)思路:矩阵快速幂#include#include#define ll long longstruct mat { ll g[15][15];}res, ori;ll n, d, m;mat mul(m原创 2015-07-31 09:48:53 · 742 阅读 · 0 评论 -
uva11077(数论)
题意:给定n,k求出有多少个包含元素[1-n]的序列,交换k次能得到一个[1,2,3...n]的序列思路:递推dp[i][j]表示i个元素需要j次,那么在新加一个元素的时候,添在最后面次数不变,其余位置都是次数+1,这是可以证明的,原序列中有几个循环,需要的次数就是所有循环长度-1的和,那么对于新加一个元素,加在最后就和自己形成一个循环,次数不变,其余位置都会加入其他循环中,次数+1,原创 2015-07-30 11:05:00 · 679 阅读 · 0 评论 -
uva10943(球放盒子问题)
题意:给出N,K;问由K个数字相加得到N的方法有几种;思路:问题可以转化成有N个小球放进K个和盒子有几种方法;#include #include const int MOD = 1000000;const int N = 105;int c[2*N][2*N], n, k;void getC(int n) { memset(c, 0, sizeof(c)原创 2015-08-11 19:06:03 · 535 阅读 · 0 评论 -
uva11754(水题)
题意:给出a,b;求出a,b间的平方数;思路:a,b都开根;然后r-l-1就行了;但是要判断a是不是刚好可以开根,不行的话l要加1;#include #include int a, b;int main() { while(scanf("%d%d", &a, &b) && a + b) { int l = sqrt(a); int r =原创 2015-08-11 21:10:42 · 904 阅读 · 1 评论 -
uva10294(置换群)
题意:有n个珠子围成的环,有t种颜色可以染这些珠子;如果这个环可以旋转有几种办法;如果这个环可以旋转,且可以翻转,有几种办法;思路:大白上说的置换群;#include #include #define ll long longusing namespace std;const int N = 55;ll p[N];int n, t;int ma原创 2015-07-30 09:52:29 · 801 阅读 · 0 评论 -
uva10341(解方程)
题意:给出一个方程,求解X;思路:因为方程是单调递减的,所以二分求解;#include #include #include #include using namespace std;double p, q, r, s, t, u;double solve(double a) { return p * exp(-a) + q * sin(a) + r原创 2015-08-11 08:53:49 · 779 阅读 · 0 评论 -
uva10169(概率)
题意:有A,B两个罐子,A中1个球,B中2个球,每个罐子中都有一个红球;每次从两个罐子分别中取出1个球。记下结果,再放回去,放回后再往两个罐子都加一个白球;问n次操作中,至少有1次取出的两个球都是红球的概率,还有若n次操作每次取出的球都是两个红球的概率小数点后有几个连续的0。思路:连续两个都是红球,要前面都没有的概率*这一次有的概率,并且叠乘上去;第二个问题就是把每次取到两原创 2015-02-03 23:49:53 · 464 阅读 · 0 评论 -
uva10673(数论)
题目的意思就是给出两个数字x , k肯定存在两个数字p,q 使一个是向下取整,一个是向上取整.求一组p,q;如果这个数整出,那么向上向下取整肯定是一样的,而且是x的k分之一,那么只要p+q==k就行,我是直接输出0和k如果两个数不整除,那么两个数肯定差1.那么小的那个系数去-x 大的取x相加肯定等于x所以输出-x 和 x;AC代码:#incl原创 2014-12-27 13:04:24 · 412 阅读 · 0 评论 -
UVA 10110 Light, more light
Light,more lightThe ProblemThere is man named "mabu" for switching on-off light in our University.He switches on-off the lights in a corridor. Every bulb has its own toggle switch. That is, if it原创 2014-07-19 15:50:07 · 577 阅读 · 0 评论 -
UVA575 Skew Binary
A - Skew BinaryTime Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %lluSubmitStatusDescription When a number is expressed in decimal, the k-th digit represents a m原创 2014-07-18 16:20:44 · 557 阅读 · 0 评论 -
UVA350 Pseudo-Random Numbers
Pseudo-Random Numbers Computers normally cannot generate really random numbers, but frequentlyare used to generate sequences of pseudo-random numbers. These are generatedby some algorithm,原创 2014-07-18 17:27:55 · 616 阅读 · 0 评论 -
UVA408 Uniform Generator
Uniform Generator Computer simulations often require random numbers. One way to generate pseudo-random numbers is via a function of the formwhere `` " is the modulus operator.Su原创 2014-07-18 17:16:17 · 395 阅读 · 0 评论 -
UVA550 Multiplying by Rotation
Multiplying by Rotation Warning: Not all numbers in this problem are decimal numbers!Multiplication of natural numbers in general is a cumbersome operation. In somecases however the原创 2014-07-18 16:35:51 · 543 阅读 · 0 评论 -
UVA579 Clock Hands
ClockHands The medieval interest in mechanical contrivances is well illustrated by the development of the mechanical clock, the oldest of which is driven by weights and controlled by a ver原创 2014-07-19 16:46:54 · 492 阅读 · 0 评论 -
UVA10250 The Other Two Trees
Problem EThe Other Two TreesInput: standard inputOutput: standard outputTime Limit: 2 seconds You have a quadrilateral shapedland whose opposite fences are of equal length. You have four n原创 2014-07-19 16:40:53 · 561 阅读 · 0 评论 -
UVA10061 How many zero's and how many digits ?
Problem GHow many zeros and how many digits?Input: standard input Output: standard outputGiven a decimal integer number you will have to find out how many trailing zeros will be there in i原创 2014-07-18 17:46:11 · 485 阅读 · 0 评论