自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(388)
  • 资源 (1)
  • 收藏
  • 关注

原创 POJ 2992 Divisors 求一个数的因数的个数

题意:输入C(n,k), 求该数的因数个数。题解:对于任意质数p, n!中有(n/p+n/p^2+n/p^3+...)个质因子p。#include#include#includeusing namespace std;const int MAX = 450;int a[MAX], p[MAX], pn;void prime (){ pn = 0

2012-02-29 21:01:13 1866

原创 POJ 3358 Period of an Infinite Binary Expansion 欧拉函数+欧拉定理

题意:输入一个有理数p/q(保证是一个小数),然后将其小数部分用二进制表示。求出在此种表示下的循环起点和循环节长度{x} = 0.a1a2...ar(ar+1ar+2...ar+s)w题解:来自Discuss我们可以观察一下1/10这组数据,按照二进制转换法(乘二法),我们可以得到:1/10  2/10 4/10 8/10 16/10 32/10 ...然后都分子都尽可能减去1

2012-02-28 23:36:03 1466

原创 POJ 3090 Visible Lattice Points 法雷级数

题意:从原点看第一象限里的所有点,能直接看到的点的数目是多少。(不包含原点) 法雷级数定义  R.亨斯贝尔格著李忠翻译的《数学中的智巧》一书,介绍了法雷级数。这里每一行从0/1开始,以1/1结尾,其它数自左至右将所有的真分数按增加顺序排列;第n行是由所有分母小于或等于n的真分数组成,我们称为n阶法雷级数。如下表:  F1: 0/1 1/1   F2: 0/1 1/2

2012-02-27 22:45:32 1655

原创 POJ 2478 Farey Sequence 快速求欧拉函数/法雷级数

题解:E(x)表示比x小的且与x互质的正整数的个数。1.若p是素数,E(p)=p-1。2.E(p^k)=p^k-p^(k-1)=(p-1)*P^(k-1)证:令n=p^k,小于n的正整数数共有n-1即(p^k-1)个,其中与p不质的数共[p^(k-1)-1]个(分别为1*p,2*p,3*p...p(p^(k-1)-1))。所以E(p^k)=(p^k-1)-(p^(k-1)-

2012-02-27 21:02:48 1121

原创 POJ 2773 Happy 2006 欧拉函数的应用

题意:输入两个数m,k。求与m互素的第k个数。题解:我们知道,如果a和m互素,那么k*m+a与m互素。也就是说【1,m-1】,与【k*m+1,k*m+m-1】区间存在一个对应关系:【1,m-1】中与m互素的个数 = 【k*m+1,k*m+m-1】中与m互素的个数。另外,值得注意的是,我们在求欧拉函数的过程中实际上求出了m所有的素因子,既然如此,就可以通过筛选法筛掉所有与m不互素的数。

2012-02-27 17:23:14 804

原创 POJ 2047 Relatives 欧拉函数

#include#include#include#include#include#includeusing namespace std;#define lint __int64lint Euler ( lint n ){ lint i, ret = n; for ( i = 2; i * i <= n; i++ ) { if ( n %

2012-02-26 21:08:31 698

原创 POJ 1284 Primitive Roots (原根,欧拉函数)

转自:http://www.cnblogs.com/ACShiryu/archive/2011/08/06/poj1284.html/**************************************************************************************************/题意:就是给出一个奇素数,求出他的原根的个数。定义:

2012-02-26 20:56:50 3180

原创 POJ 2429 GCD & LCM Inverse (整数分解,由gcd+lcm求a,b)

题意:给你两个数a,b的最大公约数和最小公倍数,求a,b。(有多组a,b的情况下取a+b最小的)题解:令 c = a * b / gcd(a,b),对 c 因式分解假如c = p1^k1 * p2^k2 * p3^k3令 d1 = p1^k1, d2 = p2^k2, d3 = p3^k3然后从d1,d2,d3中选取某几项,使得它们的积 s 最接近sqrt(c),且那么 a =

2012-02-26 17:14:30 3693

原创 POJ 1811 Prime Test 素数测试

#include#include#include#include#include#includeusing namespace std;#define lint __int64lint ans;lint gcd(lint a,lint b){ if ( b == 0 ) return a; return gcd ( b, a % b );}

2012-02-26 00:03:20 709

原创 POJ 2689 Prime Distance (筛选法平移)

题意:给定一个范围,求此范围内任意两个相邻素数的差值,输出最大值和最小值。题解:1 = 1000000 在空间限制的条件下,可以先将[ L, U ] 平移到 [ 0, U-L+1 ]。然后用筛选法做。注意:筛选的时候由于1不是任何素数的倍数,所以需要特殊处理。#include#include#includeusing namespace std;const int MAX =

2012-02-25 20:18:11 931 1

原创 POJ 2909 Goldbach's Conjecture (求x=p1+p2)

题意:哥德巴赫猜想。任意一个>=4的偶数可以写成两个素数之和。即x=p1+p2。给出一个x,求p1,p2的对数。#include#include#includeusing namespace std;#define MAX 32768int p[MAX], a[MAX], pn;void prime (){ int i, j; pn = 0; memset(a

2012-02-25 16:47:53 864

原创 POJ 1730 Perfect Pth Powers (求最大p,x=b^p)

题意:求最大的P值,使得x=b^p。b可以为任意值。需要注意的是x有可能为负数,题中“ magnitude at least 2”应该指的是|X|>=2.题解:sqrt(2^32) = 65536,可以事先求出这个范围内的所有素数。然后在素数中找出x的因素,x=(p1^k1)*(p2^k2)*(p3^k3)*(p4^k4)····。最后对k1,k2···求一次最大公约数。若x#includ

2012-02-25 16:25:35 1138

原创 POJ 2191 Mersenne Composite Numbers 整数分解

题意:分解2^K次方以内的梅森复合数。#include#include#include#include#include#includeusing namespace std;#define lint __int64lint ans[65];int p[65], cnt;lint gcd ( lint a, lint b ){ while ( b != 0 )

2012-02-24 22:03:27 1140

转载 POJ 2191 各种素数算法

来自Discuss.分析:首先打出63以内的素数prime[i...n],之后利用miller_rabin素数测试法测试2^prime[i]-1是否为素数(可打表或不,不怎么影响)。如果不是则利用Pollard对该数进行质因子分解。 对于miller_rabin素数测试法和Pollard整数质因子分解数论方面的书都有,几乎是模板。code:2191 Accepted 172K 16MS

2012-02-23 20:42:59 1060

原创 POJ 3641 Pseudoprime numbers 伪素数测试

题意:判断一个数是否是基于a的伪素数。只有当p是合数且a^p = a ( mod p ) 时,才输出yes。题解:Miller_Rabin素数测试。#include#include#includeusing namespace std;#define lint __int64lint modular_exponent ( lint a, lint b, lint n ){

2012-02-23 19:12:39 877

原创 POJ 1095 Prime Cuts 素数

题解:#include#includeusing namespace std;const int MAX = 2000;int p[MAX], a[MAX], pn;;void prime (){ int i, j; memset(a,0,sizeof(a)); p[1] = 1; pn = 1; for ( i = 2; i < MAX; i+

2012-02-23 18:17:13 629

原创 POJ 3518 Prime Gap 素数

#include#includeusing namespace std;const int MAX = 1299710;int p[MAX], a[MAX], pn;;void prime (){ int i, j; pn = 0; memset(a,0,sizeof(a)); for ( i = 2; i < MAX; i++ ) {

2012-02-23 16:13:34 877

原创 POJ 2034 Anti-prime Sequences

题意:输入m, n, d。求出m,m+1,m+2,````m+n的一个排列。使得任意的连续k个数之和都为合数,2题解:暴力,依次枚举第一个数,第二个数····,第n-m+1个数。#include#include#includeusing namespace std;const int N = 1005;bool p[N*10], used[N]; // p[0] = fal

2012-02-23 12:35:49 1665 1

原创 POJ 1365 Prime Land 整数分解

题解:在求素数的过程中记录下每个数的最小因素,a[n]表示n的最小因素,例如a[2]=2, a[12] = 3, a[16] = 2······#include#include#include#includeusing namespace std;const int MAX = 33333;int a[MAX], p[MAX];int r, pn;struct Resu

2012-02-22 23:20:06 705

原创 POJ 2891 模线性方程组(mi mj 不互素)

题解:x = ai ( mod mi )  1 先考虑k==2的情况:x = a1 ( mod m1 )x = a2 ( mod m2 )方程组有解的充分必要条件是: d | (a1-a2) ,其中 d = (m1,m2)证明如下:必要性: 设 x 是上面同余方程组的解,从而存在整数q1,q2使得x=a1+m1*q1,x=a2+m2*q2,消去x即得a1-a2 = m2

2012-02-21 21:28:12 1323

原创 POJ 2115 C Looooops 模线性方程(扩展欧几里得)

题解:转换一下。和青蛙那题差不多。#include#includeusing namespace std;__int64 Egcd ( __int64 a, __int64 b, __int64 &x, __int64 &y ){ __int64 tmp, ret; if ( b == 0 ) { x = 1, b = 0; return a; } ret = Eg

2012-02-18 20:46:49 769

原创 POJ 2142 The Balance 扩展欧几里得,求|x|+|y|最小

题解:先做出两个函数的图像,然后求|x|+|y|的最小值。|x|+|y|=|x0+b/d *t |+|y0-a/d *t| 这个关于t的函数的最小值应该在t零点附近(在斜率大的那条折线的零点附近,可以观察出来)。以下三种情况中,函数最小值都应该出现在B点附近。#include#includeusing std::swap;int Egcd ( int a, int

2012-02-18 18:56:56 764

原创 POJ 1061 青蛙的约会 扩展欧几里得

青蛙的约会Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 67617 Accepted: 10832Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到

2012-02-18 18:29:44 490

原创 POJ 1006 Biorhythms 中国剩余定理/扩展欧几里得

先看视频:http://v.youku.com/v_show/id_XMTExNTAzOTIw.html #includeint main(){ int p, e, i, d; int num, cnt = 1; while ( scanf("%d%d%d%d",&p,&e,&i,&d) ) { if ( d == -1 ) break

2012-02-17 23:38:39 521

原创 POJ 1604 Just the Facts 阶乘最后非0位

#includeint get2 ( int n ){ if ( n == 0 ) return 0; return n/2 + get2(n/2);}int get5 ( int n ){ if ( n == 0 ) return 0; return n/5 + get5(n/5);}int g ( int n,

2012-02-16 20:21:38 891

转载 POJ 1150 The Last Non-zero Digit 阶乘最后非0位

转自:http://www.cppblog.com/abilitytao/archive/2009/10/31/99907.html这个题怎么来做呢?先别急,我们先来讨论一下下面几个子问题:1.如何求出n阶乘中质因数x(比如说5)出现的次数?比如说15的阶乘 :1*2*3*4*5*6*7*8*9*10*11*12*13*14*15由于5这个质因数只在5的倍数里面才出现,所以我从

2012-02-16 20:11:11 2136

原创 POJ 2954 Triangle (Pick定理)

题意:输入三角形的三个顶点。求三角形内部说包含的点的个数。#include#include#include#includeusing std::swap;int gcd ( int x, int y ){ int tmp; if ( x < y ) swap(x,y); while ( y ) { tmp = y; y = x % y; x = tmp;

2011-12-22 21:50:07 745

原创 POJ 1265 Area (Pick定理)

题意:求多边形边上的顶点数,多边形内部的顶点数,多边形的面积。题解:Pick定理:http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/index.html定理一:Pick 定理,1899年设Γ 为平面上以格子点为顶点之单纯多边形,则其面积为 其中b为边界上的格子点数,i为内部的格子点数。(8)式叫做Pick公

2011-12-22 20:55:49 917

原创 POJ 1654 Area (多边形面积)

题意:起点是左边原点,然后可以向八个方向移动,每次移动一格(或者对角线),保证最终回到原点。求移动一圈所围成的多边形的面积。题解:实则是要我们求一个多边形的面积,原点在该多边形上。#include#include#include#define eps 1e-8#define zero(x) (((x)>0?(x):-(x))<eps)struct Point { dou

2011-12-17 17:10:58 648

原创 POJ 1228 Grandpa's Estate

题意:求凸包的面积。题解:可以边求凸包边计算面积。

2011-12-17 15:26:25 421

原创 POJ 1228 Grandpa's Estate

题意:给定一些点,看能否确定唯一的一个凸包。题解:只有保证凸包上的每条边都至少有三个点时,才能确定其唯一性。否则可以通过在两点构成的边的外围,增加点的来改变凸包。当所有点都在同一条直线上,或者给定的点少于6个时,不能唯一确定凸包。#include#include#include#include#includeusing std::memset;using std::min;

2011-12-16 12:38:28 1072

原创 POJ 1873 The Fortified Forest

题意:有许多树,每棵树有一个坐标(x,y),一定的高度l,一定的价值v。现在要求砍掉一些树,用它们围成一个篱笆,将所有剩余的树围起来。问怎么砍才能使所花价值最小。题解:可以枚举组合。当然也可以用位运算枚举。求凸包时注意处理一下少于3点的情况。#include#include#include#include#includeusing std::memset;using std::

2011-12-15 17:40:37 721

原创 POJ 2007 Scrambled Polygon

题意:给定许多点,要求按极角排序,中心点为原点。(这些点最多只会在三个象限出现,并且第1个点一定是原点。)题解:用来测试下凸包的模板。

2011-12-14 14:49:55 581

原创 POJ 1113 Wall (凸包)

裸的凸包。所有凸包拐点的角度和是360。刚好等于一个圆周长。2*Pi*r。

2011-12-13 17:10:29 479

原创 POJ 1039 Pipe

题意:光线从管子射入,求在管子中能传播的最远的距离。若能穿过管子则输出"Through all the pipe."题解:刘汝佳书上的一道题。注意看题··。题中的一条光线同时经过几个折点也可以···#include#include#include#include#define eps 1e-8#define zero(x) (((x)>0?(x):-(x))<eps)

2011-12-12 22:35:31 497

原创 POJ 2826 An Easy Problem?! (线段相交)

题意:两块木板可以承装的雨水的最大面积,注意雨水是垂直下落的。题解:多种情况需要考虑清楚。#include#include#define eps 1e-8#define zero(x) (((x)>0?(x):-(x))<eps)struct Point{double x,y;};struct Line{Point a,b;};//计算cross product (P

2011-12-11 22:17:43 630

原创 POJ 3347 Kadj Squares (几何+线段树)

题意:按图中所示的方式摆放正方形。输出那些正方形从上往下看得到的正方形。题解:1:由于所有线段都成45/135度角的关系,将所有数据大sqrt(2)倍,便可以当做整数来处理。2:用线段树处理覆盖的时候,由于只能处理整点,下面的情况需要注意即第3只有最左边的一点可以看到。但是第2却把该点标为2,这样一来得到的结果就是3看不到。为避免这种情况发生,可以将每一个正方形的左右两点都乘以2,

2011-12-11 19:46:05 766

原创 Codeforces Beta Round #97 (Div. 2)

E. Zero-Onetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle Petya very much likes playing with littl

2011-12-10 23:14:05 623

原创 Codeforces Beta Round #97 (Div. 2) (判断正方形和矩形)

D. Rectangle and Squaretime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle Petya very much likes rectan

2011-12-10 23:13:04 699

原创 Codeforces Beta Round #97 (Div. 2)

C. Replacementtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle Petya very much likes arrays consisti

2011-12-10 23:11:18 674

C++ STL 标准模板库

ACMer必备.内容非常详尽,不过是英文版的额。

2012-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除