数论
文章平均质量分 61
chaojiaini
这个作者很懒,什么都没留下…
展开
-
PC/UVa 题号: 110701/10110 Light,More Light
题意大概:走廊里有n个灯泡,一个人就来回走n次,(来回指的是一来一回算一次)当走第i次的时候他只能按动能被i整除的灯泡按钮,但是回来的时候不按开关,求最后一个灯泡是开着的还是关着的 一开始读题的时候很纠结”来回“俩字,很郁闷!(一开始题中没说灯的状态是开着的还是关着的,但是本着节约的原则,我觉得是关着的,事实证明是关着的,嘿嘿) 分析: 当走第i次的时候他只能按动能被i整除的灯泡按钮原创 2012-02-24 13:41:38 · 487 阅读 · 0 评论 -
poj 1730 Perfect Pth Powers
题目大概意思 给你一个x 令 x=b^p 求最大的p 例如 81=9^2=3^4则p的值为 4 一看蒙啦,这怎么求啊,数据范围在2^32次方之内,纠结,这种题一定会有算法, 再看列出几个例子来 例如: x p 9=3*3 2 36=2*2*3*3原创 2012-04-18 17:55:16 · 463 阅读 · 0 评论 -
poj 1528 Perfection
打表吧,不是很难: 1 一个数n的正因数之和等于n则输出PERFECT 2 大于n 输出ABUNDANT 3小于n输出 DEFICIENT 注 因数不包括它本身 算法 跟求素数的算法是一样一样儿的,只是这个还得算1 注意数字的输出要求占5个空格 代码 #include #include #include using namespace std; #define ma原创 2012-04-15 20:58:55 · 500 阅读 · 0 评论 -
POJ 1556 The Doors
注意两点之间线段最短,从 A (0,5) 到B(10,5)两点之间的最短距离一定是连接各个墙上的某些点组成的路径之和 1 注意 如果连接门上的两点要判断这两点之间是否有墙的存在,如果存在墙就不能连接,也就是没有路径,否则两点之间有路径,并计算保存两点之间的距离 2 这些点组成一个图,以后就可以用迪杰斯特拉求最短路径了 代码: #include #include #include原创 2012-04-10 18:25:56 · 386 阅读 · 0 评论 -
PC/UVa 110708/10089 Repackaging
是一个定点是否在图多边形内的问题,具体为什么待续~~~~~ #include #include #include using namespace std; #define maxnum 1001 long map[maxnum][3]; long n; bool repackage() { long i,x1,y1,x2,y2; long a1,b1,a2,b2原创 2012-03-19 19:32:59 · 604 阅读 · 0 评论 -
PC/UVa 110707/10090
c1美元的盒子可以装n1个弹珠,c2美元的盒子可以装n2 个弹珠,一共n个弹珠问怎样花最少的钱将盒子装满弹珠,且不留弹珠 一看没思路,再看,可能是跟线性同余方程有关, 欧几里得扩展算法 a*x+b*y=gcd(a,b) b*x1+(a-floor(a/b)*b)y1=gcd(a,b); 将算式扩展开可得 x=y1; y=x1-floor(a/b)*y1; 求出 一个x0 y0使得原创 2012-03-09 14:36:42 · 389 阅读 · 0 评论 -
POJ 1091 跳蚤(经过三天的研究,终于真的把它搞明白了)
题意:一个序列有n+1个数 最后一个为m ,前面的数都不大于m ,一个跳蚤按照这个序列使其能够跳到距离起始位置左边一个单位长度的的地方,求有多少种这种数列; 一开始读题,我 就想着 这n+1个数相加最后结果肯定是1;这需要数论的知识 如果存在x[1],x[2].....x[n],使得 data[1]*x[1]+data[2]*x[2]+......+data[3]*x[3]==1;,则,dat原创 2012-02-26 11:00:25 · 1310 阅读 · 0 评论 -
PC/UVa 110705/10168 Summation of Four Primes
求四个素数之和等于给定的数n ! 题目中描述每个奇数要么是素数要么可以写成三个素数之和,也就是说如果n是奇数,四个数之和当中肯定有一个数是2 ,否则就形不成一个奇数,n-2 扔为奇数,第二个数取3 ,n-2-5 为偶数,因为后面说一个偶数一定能写成两个素数之和,对将n-5分解成两个素数就可以了。如果一个数n是偶数,取前两个数为2 ,n-4仍为偶数,一定能分解成两个素数,题中说可以任意输出一组答案,原创 2012-03-06 21:18:27 · 486 阅读 · 0 评论 -
HUNAM 10493
Factorials Again Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users: 293, Accepted users: 243 Problem 10493 : No special judgement Problem descr原创 2012-03-03 16:00:40 · 427 阅读 · 0 评论 -
PC/UVa 110706/10042 Smith Numbers
1 最小的素数是2 也就是说0 和1 不是smith数 2 先求素因子,再求各个素因子的各位数字之和,然后相加 3 素数不是smith数 代码 #include #include #include #include using namespace std; #define maxnum 1000 int n; int num[maxnum],num1[maxnum],原创 2012-02-29 19:20:46 · 427 阅读 · 0 评论 -
PC/UVa 题号: 110704/10139 Factovisors
两个数 n 和 k 判断k能否整除 n! 思路: 任何一个正整数 n=p1^(x1)*p2^(x2)……*pn^(xn); 其中p1,p2.……pn 是素数,x1,x2,……xn 是各个素数的指数(也就是该质因数的个数) 将k分解质因数,并记录各个质因数的个数 分别用 2……n的数去除以k的质因数,每除一次就使k的质因数的个数减一,直到为零,最后遍历记录k的质因数个数的数组,只要有大于零的原创 2012-02-28 19:28:54 · 561 阅读 · 0 评论 -
PC/UVa 题号: 110703/1014 Euclid Problem
对于任意正整数 A B #include #include #include #include using namespace std; 根据数论只是,任何整数A,B,都存在这样一对X,Y 使得A*X+B*Y=gcd(A,B);成立(理论不推了,看我的博客“整除性”里面有讲解) 代码 #include #include #include #include u原创 2012-02-27 14:53:59 · 497 阅读 · 0 评论 -
PC/UVa 题号: 110702/10006
主要求a^n mod n=a 一开始直接求,超时,后来写了一个比较快的还是超时,最后看的人家的递归,才过了,数很大,用int会溢出,用long long 或者 unsigned都可以(double不可以mod) #include #include #include #define maxnum 65000 int num[maxnum]; int mid[maxnum]; u原创 2012-02-26 20:08:45 · 362 阅读 · 0 评论 -
PC/UVa 题号: 110101/100 3n+1 Problem
不解释了,暴力,不过需要注意的是 i有可能大于j #include #include #define maxnum 1000001 long fun(int n) { long sum=1; while(n>1) { if(n%2==0) n/=2; else n=n*3+1; sum++; } return sum;原创 2012-02-24 16:27:40 · 550 阅读 · 0 评论 -
poj 1775 Sum of Factorials
题目大概意思是:让判断一个数n是否能够用若干个数的阶乘之和表示 例如9=1!+2!+3! 其中有一句我觉得有问题,导致我多提交一次 就是Σ1=1 1, xi >= 0, xi = xj if( i = j).就是说xi==xj的时候i==j 但是 0!==1!但是i!=j这可怎么办啊于是我就把0!擅自改成1 了结果错了,后来又改成1 结果就对了,哎!深深体会到语言表达的重要性啊 一开始我是怎原创 2012-04-18 20:49:47 · 403 阅读 · 0 评论