
数论
BEconfidence
坚持才是胜利之道
展开
-
UVa11346 - Probability (连续概率)
1.首先是把范围见笑到第一象限,因为四个是一样的。2.把求上部分的面积变为求下部分的面积(积分求解)3.面积为:s+s*f(a,s/b)1/xdx 化简为s+s*ln(a*b/s)4.结果为:m=a*b (s - s - s*ln(m/s))/m5.以上做法的前提是双曲线和所求区域相交,注意两个特判:1.s>ab时,概率为0 2.s接近0,概率为1#include#i原创 2015-05-08 14:52:34 · 999 阅读 · 0 评论 -
UVa10375 - Choose and divide
题意:给定p,q,r,s。求c(p,q) / c(r, s)。思路:由于c(n,m)分子和分母数是相等的,所以可以进行一除一乘。就不会超过范围代码:#includeint p,q,r,s,i;double ans;int main(){ while(~scanf("%d%d%d%d",&p,&q,&r,&s)){ ans=1.0;原创 2015-05-05 21:44:02 · 918 阅读 · 0 评论 -
HDUBoard Game Dice (数学期望)
推出的公式是M^x*x/N,大概意思是M^x*x这些种可能后一定会找出一个裁判,在除以N为数学期望。可能和数学公式还有关系。#include#include__int64 gcd(__int64 a,__int64 b){ return b == 0 ? a : gcd(b, a%b);}int main(){ __int64 i,j,n,m,t,x,a,b,te原创 2015-05-06 20:27:16 · 661 阅读 · 0 评论 -
UVa12230 - Crossing Rivers (数学期望)
题意:给你A和B的距离,以及途中n条河的信息,问你从A到B的期望思路:我们单纯算过河时间的话,最快的是l/v,最慢的可能是3l/v,期间的时间是线性的,所以期望就是4l/2v=2l/v#include#include#include#includeint main(){ int n; double p,l,v,d; int cas=1; while(原创 2015-05-06 22:02:28 · 814 阅读 · 0 评论 -
UVa1639 - Candy(期望+对数精度处理)
注意题意是开始两个盒子各有n个糖果,等吃完就只有两种情况,盒子1没了,或者盒子2没了。这完全是个求概率期望的数学问题。借用二项分布公式:P(ξ=K)= C(n,k) * p^k * (1-p)^(n-k), 其中C(n, k) = n!/(k! * (n-k)!)注意!:第二个等号后面的括号里的是上标,表示的是方幂。得出第i次打开盒子1没糖的概率C(2n-1,n)p^(n+1)(1原创 2015-05-08 08:35:07 · 1592 阅读 · 0 评论 -
UVa 10622 - Perfect P-th Powers(数论)
#include #include #include #include #include #include using namespace std;int find(int n){ for (int i = 2 ; i < 50000 ; ++ i) { if (pow(0.0+i, (int)(log10(fabs(n+0.0))/log10(i+0.0)+0.01))原创 2015-06-16 21:05:23 · 804 阅读 · 0 评论 -
UVa 294 - Divisors
计算一个给定区间中因数最多的数。分析:数论、组合数学。题目的数据的比较大,如果暴力一定会超时,那么就考虑利用其他方法求解。 我们将给定数字因式分解,那么因数的个数就是π(各质因子数+1)。(每个质因子取0~上限个) 因为数据时在10^9之内,所以质因数只能是33333以内的素数,利用筛法将素数打表计算即可。#include原创 2015-06-16 21:15:29 · 632 阅读 · 0 评论 -
hdu2199 (高精度二分)
二分的高精度模板二分法的精度使用方法#include#define F(x) 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6int main(){ int t; scanf("%d",&t); while(t--){ double y,l=0,r=100,mid; scanf("%lf",&y); i原创 2015-05-31 00:13:16 · 1120 阅读 · 0 评论 -
hdu1115 Lifting the Stone(几何,求多边形重心模板题)
题意:就是给你一个多边行的点的坐标,求此多边形的重心。一道求多边形重心的模板题!#include#include#includeusing namespace std;struct point{ double x,y;}PP[1000047];point bcenter(point pnt[],int n){ point p,s; double原创 2015-06-03 23:06:52 · 547 阅读 · 0 评论 -
hdu1785 You Are All Excellent
本着多谢思路的原则,还是把题解及代码记录下啦吧。用到的atan2函数,atan2(y,x)应该就是与x轴的夹角弧度了,网太渣,没查。#include#include#includeusing namespace std;struct point{ double x,y; bool operator < (const point&rhs) const {原创 2015-05-23 10:54:27 · 878 阅读 · 0 评论 -
数学专题
hdu2824欧拉函数模板#includeusing namespace std;const int N=3000010;int prime[N],isprime[N];int phi[N];void get_phi(){ int i,j,cnt=0; for(i=2;i<N;i++) { if(isprime[i]==0){原创 2015-08-16 23:15:01 · 620 阅读 · 0 评论 -
UVa 10791 Minimum Sum LCM
数学题题意(就是因为读错题意而wa了一次):给一个数字n,范围在[1,2^23-1],这个n是一系列数字的最小公倍数,这一系列数字的个数至少为2例如12,是1和12的最小公倍数,是3和4的最小公倍数,是1,2,3,4,6,12的最小公倍数,是12和12的最小公倍数………………那么找出一个序列,使他们的和最小,上面的例子中,他们的和分别为13,7,28,24……显然最小和为7原创 2015-05-05 21:39:31 · 631 阅读 · 0 评论 -
UVa11040 - Add bricks in the wall (规律递推)
找规律的题【x】【a】【x-a】【y】 【 】【z】 这里面xyz都已知,所以可以求出a = (x + y - z ) /2#includeint a[9][9];int main(){ int t; scanf("%d",&t); while(t--){ for(int i=0;i<9;i+=2)原创 2015-05-12 14:21:51 · 1117 阅读 · 0 评论 -
UVa11971 - Polygon(连续概率)
紫书上推出来的公式1-(k+1)/2^(k)注意范围 都用的long long#include#include#includeusing namespace std;typedef long long ll;ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}int main(){ int n,kase=1; s原创 2015-05-08 15:21:21 · 1097 阅读 · 0 评论 -
UVa1640 - The Counting Problem(数位统计)
题意: 统计两个整数a,b之间各个数字(0~9)出现的次数,如1024和1032,他们之间的数字有1024 1025 1026 1027 1028 1029 1030 1031 1032 总共有10个0,10个1,3个3等等。分析: 因为前导0的干扰,为了计算方便暂时都先计算在内,之后再减; 如果是0~199,那么百位上的0和1各出现一次,s剩下的就是两个00原创 2015-05-08 22:37:54 · 1569 阅读 · 0 评论 -
UVa10900 - So you want to be a 2n-aire? (期望)
我们不妨设a[i]表示正确做完第i道题的收益的期望,显然我们最后要求的就是a[0]咯,但这个先放一放,我们先讨论一下在做第i+1个题目前我们是选择答题呢还是选择放弃呢。 首先,我们可以直观的想到,如果做完i题就退出的话,就可以得到2^i这么多钱。不妨假设答对第i+1个题的概率为p,那么我们自然会想到用p乘以“某个值”表示答题所获得的收益的期望,如果p乘以这个值大于2^i的话,我们肯定原创 2015-05-08 23:29:04 · 591 阅读 · 0 评论 -
UVa11440 - Help Tomisu(数论)
题意:给定n和m,求[2,n!]中,所有质因子个数都大于m的个数思路:ϕ(m!)表示小于m!并与m!互质的个数,而与m!互质的个数,他的质因子肯定不包含1-m,因此就是满足条件的。然后对于这题而言,则是要求n!中,不与m!互质的个数,答案取模100000007那么先看一个证明:求kn中与n互质的个数,答案为kϕ(n)。ϕ(n)表示1-n中与n互质的个数,那么由此考虑[n原创 2015-05-11 21:13:45 · 1079 阅读 · 0 评论 -
UVa1363 - Joseph's Problem(数论)
在题目中有三种情况:1、1;2、k == n ;3、k>n;对于第一种情况我们可以分为1到k和k到n两个子问题来解。1.1、1到k: for( i = 1 , sum = 0 ; i 1.2、k到n: sum =(n-k)*k;而对于第二种情况就是第一种情况的(1)。但是就这样写的话时明显的tle的。对于第二种情况也可以分为几个小问题来求解:2.1、原创 2015-05-10 22:07:12 · 982 阅读 · 0 评论 -
UVa10214 - Trees in a Wood.(数论)
只看某一个象限 能看到的数 == 一个 象限*4+4能看到的树既距离原点的距离 gcd(x,y)==1a 和 b 一大一小 预处理2000以内的phi函数,枚举小的一条边从1...a 与 a gcd 为 1 的数的个数就是 phi(a)从 1+a ... 2*a 与 a gcd 为 1 的数的个数 因为 GCD(i,a) = GCD(i+a,a) 所以还是 phi(原创 2015-05-11 22:52:27 · 1008 阅读 · 0 评论 -
1393 - Highways(问题抽象)(容斥原理计数)
问题的方向是对称的,统计\*2即可,当gcd(a,b)>1及重复,证:a*b满足gcd(a,b)>1,在他对角线和a'和b'对角线是同一条直线(a'=a/gcd(a,b)b'=b/gcd(a,b))其次,如果放置位置不够靠左,也不够靠上,则它和它“左上方”的包围盒也重复了假定左上角坐标(0,0)则对于左上角在(x,y)的包围盒,其左上方的包围盒的左上角为(x-a,y-b),这个左上角合原创 2015-05-12 13:42:47 · 770 阅读 · 0 评论 -
UVa1643 - Angle and Squares(几何)
有n个正方形和一个角(均在第一象限中),使这些正方形与这个角构成封闭的阴影区域,求阴影区域面积的最大值。分析:直观上来看,当这n个正方形的对角线在一条直线上时,封闭区域的面积最大。(虽然我不太会证明,=_=||)设所有正方形边长之和为L,OA、OB两直线方程分别为:y = k1x y = k2x,设A(x1, k1x1), B(x2, k2x2),可列出方程:原创 2015-05-12 15:34:38 · 1339 阅读 · 1 评论 -
UVa808 - Bee Breeding(坐标法)
题意:给定图中蜂窝两点,求最短距离思路:建坐标系,然后根据图中走的顺序把每个点的坐标求出来,然后利用坐标去求最小距离#include#include#include#includeconst int N = 20005;const int d[5][2]={{-1,1},{0,2},{1,1},{1,-1},{0,-2}};struct Point{ int x原创 2015-05-12 14:49:37 · 1534 阅读 · 0 评论 -
UVa1213 - Sum of Different Primes(素数表+DP)
题意是选择k个质数使其和为n,先搞一个素数表然后dp,dp[i][j]表示选了j个数和位i的方案数。#include#define foreach(it,v) for(__typeof((v).begin())it=(v).begin();it!=(v).begin();++it)using namespace std;typedef long long ll;const int ma原创 2015-05-12 15:54:20 · 1225 阅读 · 0 评论 -
找规律hdu4577
import java.util.*;import java.io.*;import java.math.BigInteger;public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int T=sc.nextInt(); for(int原创 2015-08-06 22:57:26 · 741 阅读 · 0 评论