数论
文章平均质量分 69
zuihoudebingwen
这个作者很懒,什么都没留下…
展开
-
素数判定试除法
质数的定义一个数,如果只有1和它本身两个因数,这样的数叫做质数,又称素数。试除判断法算法描述:从上述定义可知,素数不能被1和它本身之外的数整除,所以,判断一个数x是否素数只要看它是否能被2~sqrt(x)间的数整除即可;而求N内所有素数则是循环重复上述过程。C语言实现:优化分析:在循环条件中重复调用sqrt(i)显然是比较浪费时间转载 2012-08-29 16:43:19 · 2402 阅读 · 0 评论 -
n<=10^18是否能被一个数的平方整除
问n 将n分解为:p1p2pk 其中pi为素数,且pi 若n能被一个数的平方整除,它肯定能被一个素因子的平方p^2整除,我们找到最小的这个p即可 ~~~ 1.如果p不是最后的素因子,在p之后的素数pi>=p,这时就有n>=p^3了, 即p 2.如果p是最后的素因子,所以n的形式就是p1p2p'p^2,而p' 所以可以先将n原创 2012-09-12 16:02:38 · 1685 阅读 · 0 评论 -
HDU 4143 A Simple Problem
HDU 4143 A Simple Problemhttp://acm.hdu.edu.cn/showproblem.php?pid=4143两个for枚举肯定超时,移项因式分解后,只要一个for枚举(y-x)就好了,(y+x)用n去除(y-x)。另外两个小点,关注到(y-x)一定小于等于sqrt(n),并且(y-x)与(y+x)不相等#include#include#incl原创 2012-09-12 17:13:43 · 518 阅读 · 0 评论 -
hdu 1395
水题:数据量太弱,枚举就能过。。分析:1、n==1或者n%2==0,都不会有这样的2的幂次存在。因为2^k(k=1、2、3...)为偶数,n为偶数时显然不存在;n==1则容易验证。2、n为奇数是则一定存在。其实这里有点没想通,哪位路过的大牛给讲下。。n为奇数,则至少会存在一个偶数模取n等于1。2^k则会找到所有的偶数。#include#includ原创 2012-09-13 19:49:42 · 396 阅读 · 0 评论 -
求逆元的简单数论题
hdu 1576A/BTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 691 Accepted Submission(s): 561Problem Description要求(A/B)%9973,但由于A很大,我们原创 2012-09-11 21:24:43 · 1040 阅读 · 0 评论 -
hdu 2608
0 or 1Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1581 Accepted Submission(s): 388Problem DescriptionSolving problem is a原创 2012-09-13 18:32:14 · 691 阅读 · 0 评论 -
hdu 2674
N!AgainTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1779 Accepted Submission(s): 1009Problem DescriptionWhereIsHeroFrom:原创 2012-09-14 09:53:47 · 464 阅读 · 0 评论 -
hdu 2964按奇数权展开
Prime BasesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 422 Accepted Submission(s): 208Problem DescriptionGiven any intege原创 2012-09-14 11:17:59 · 556 阅读 · 0 评论 -
n^n的数字根
Eddy's digital RootsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2569 Accepted Submission(s): 1478Problem DescriptionThe d原创 2012-09-15 10:11:15 · 1235 阅读 · 0 评论 -
二进制与容斥原理
Co-primeTime Limit 1000msMemory Limit 65536KdescriptionGiven a number N, you are asked to count the number of integers between A and Binclusi原创 2012-09-19 16:01:50 · 572 阅读 · 0 评论 -
hdu 4282
#include#include#include#include#define ll long longusing namespace std;ll k;bool work(ll z,ll y,ll yz){ ll l=1,r=y-1,i,j,mid; while(l<=r) { mid=(l+r)>>1; ll dd=1;原创 2012-09-09 21:05:23 · 485 阅读 · 0 评论 -
phi 与 N的因子数的奇偶性
#include#include#includeusing namespace std;#define maxn 36000int n, mod, ans;int prim[35000];bool flag[maxn + 20];void get_prim() { memset(flag, 0, sizeof (flag)); for (int i = 2;原创 2012-09-10 21:33:25 · 1074 阅读 · 0 评论 -
欧拉函数+容斥
hdu 1695题目:各处两个区间[1,b],[1,d]和k,取两区间中的元素x、y,使得gcd(x,y)=k; 问这种组合有多少种,gcd(y,x)=k和gcd(x,y)=k是相同的。分析:数据量为100,000,呕心的k可以为0。 由数据可以知道不可以暴力 (1)由于gcd(x,y)=k 满足 gcd(x/k,y/k)=1(!!)原创 2012-09-11 20:04:25 · 843 阅读 · 0 评论 -
没有2,3,5,7以外的质因子的数的排序
题目大意: 5 如果一个数的没有2,3,5,7以外的质因子,则这个数6 称为Humble数。前几个Humble数为7 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 820, 21, 24, 25, 27, ...9 求第n个Humble数。10 分析与解题思路:11 Humble数没有2,3,5,7以外的质因子原创 2012-09-12 09:39:52 · 1369 阅读 · 0 评论 -
hdu 2554
这题可以这样来抽象:n对数,大小为1、2、3、...、n。现要求两个1之间有1个数,两个2之间有2个数,以此类推,两个n之间有n个数。并且,数的次序可以随意的。 解决之道:准备知识:①n对数,共2*n个数。所以要有2*n个位置来放置这2*n个数。②sum()表示求和运算。正式解决:①设k(k=1,2,..,n)放置的第一个位置转载 2012-09-14 09:00:43 · 410 阅读 · 0 评论 -
rand函数
rand()是一个可以生成随机数的函数随机数,函数返回的随机数在0-RAND_MAX(32767)之间;rand()%100结果是随机数除以100后所得的余数,即限定随机的范围是在0~99之间;公式rand()%(b-a),是求范围随机数的计算公式,%是做求余运算,正整数对n求余的范围肯定是在0~n-1之间,也就是rand()%(b-a)的范围是0~b-a-1,然后加上a,也就是范围变成了原创 2012-09-11 20:36:17 · 1149 阅读 · 0 评论 -
欧拉函数
题目大意:求所有分母不大于n的既约真分数个数分母为x的既约真分数有φ(x)个分母不大于n的既约真分数个数为 φ(1)+φ(2)+...+φ(n)开始一直TLE,最后看了网上的思路,是在生成素数的同时,求出欧拉函数,之前没有想到过,要继续努力啊!!!2478Accepted4060K235MSC++我的代码:#include#i原创 2012-08-30 18:54:57 · 1091 阅读 · 0 评论 -
二元不定方程
poj 2142http://hi.baidu.com/5l2_/blog/item/a0381951b5738a1e367abef0.html 这个文章写的很好。。。按照这位大牛写的。。大概意思 给定 a b k找到满足ax+by=k 的令|x|+|y|最小(等时令a|x|+b|y|最小)不妨a 〉b先用扩展欧几里得算法求出 一组解 x0,y0,通解可以表示为x=x转载 2012-08-29 16:02:19 · 824 阅读 · 0 评论 -
hdu 1214圆桌会议
这题就是在求一串数(圆环上)在每次只能对调相邻两位时,要得到其逆序最少要移动多少次。在直线上移动很简单,类似于冒泡排序的方法,一个数不断向上冒,直到最终位置。不难得到其需要移动的次数公式为n*(n-1)/2。其中n为总点数。那么在圆环上移动又会如何呢?应该会不一样这是我们直观的感受。事实也是如此,移动的过程是将圆环分为两段,分别移动。那么又在何处分段呢?答案是尽量使两段长度转载 2012-09-14 21:24:00 · 371 阅读 · 0 评论