
【数论】
文章平均质量分 66
剑紫青天
在校本科生,ACMer
展开
-
UVaOJ-11752-The Super Powers 解题报告
不错的思考题,可找规律。人生第一次真正意义上的写证明。题意:如果一个数是两个不同的数的幂,那么这个数就称之为超级幂,比如64 = 8^2 = 4^3。因此64是一个超级幂。没有输入,请输出0到2^64-1范围内的所有超级幂。 我的解题思路:首先要找出超级幂的规律,根据样例明显会看出来超级幂不能算本身的1次幂,我们试着把数都分解成幂形式来看(1特殊)。16 = 2^4 =原创 2015-01-26 17:46:07 · 908 阅读 · 0 评论 -
POJ-2478-Farey Sequence 解题报告
求欧拉函数表题。题意:法雷序列Fn对于任何一个大于等于2的n来说是这么一种序列,它是由最简真分数a/b构成,0 我的解题思路:水题,对于2~n中每一个数的欧拉函数之和就是答案了。 我的解题代码:#include #include #include #include #include #include using namespace原创 2015-02-24 16:17:51 · 796 阅读 · 0 评论 -
POJ-1142 & HDOJ-1333 Smith Numbers 解题报告
分解质因数题。题意:所谓史密斯数就是说这个数分解成质因数后每一个质因数各个数位上的数字之和相加的结果与这个数各个数位上的数字之和相等,并且这个数不能是质数。现在给你一个不超过8位的数字n,求出大于n的最小史密斯数。 我的解题思路:分解质因数后判断就行了,注意素数不是史密斯数,另外因为给的是不超过8位的数字,所以但给的数字是99999999的时候答案是会超过八位的,因此计算数原创 2015-01-22 19:09:29 · 829 阅读 · 0 评论 -
UVaOJ-10791-Minimum Sum LCM 解题报告
分解质因数题。题意:现在给你一个数,然后请你找到两个或两个以上的数,使得它们的最小公倍数是给你的这个数,要求你找到的几个数的和尽量小,输出这个和。 我的解题思路:看起来很难的样子,这里涉及到求最小公倍数的原理。在几个数里面求最小公倍数,要把这几个数都分解不同的质因数,将每一个质因数次数最大项相乘就得到了这几个数的最小公倍数。比如:求108,28和42的最小公倍数,108 =原创 2015-01-23 10:54:24 · 750 阅读 · 0 评论 -
LA-3399 & POJ-2739 Sum of Consecutive Prime Numbers 解题报告
素数水题。题意:给你一个不大于一万的整数n,求有多少种方案可以把n写成若干个连续素数的和。 我的解题思路:把不大于一万的素数都筛出来,存储成前n个素数的和这样的形式。然后枚举每一个方案,把对应方案的和方案次数加一就可以了。存储好一万个数的答案。如果说一万以内的素数个数是k,那么这个枚举的复杂度是O((1+k)*k/2)。也就是k平方的复杂度,时间是够了。0ms水过。原创 2015-01-19 13:24:30 · 810 阅读 · 0 评论 -
UVaOJ-10200-Prime Time 解题报告
跟判断素数有关的题。题意:有这样一个公式,n^2 + n + 41,当0 39时这个公式的值有可能不是素数了,不过已知n 我的解题思路:反正n = 10000时公式的值还没有超过int范围,先将10002以内范围的素数都筛出来,然后用来判断区间内公式的值是否为素数,反正也就最多10000次判断,存储为前缀和的形式,最后根据输入的左右端点直接输出就行了。注意:比较坑的是四原创 2015-01-25 17:07:55 · 793 阅读 · 0 评论 -
POJ-3070-Fibonacci 解题报告
矩阵快速幂。人生第一次真正意义上写的矩阵快速幂题目啊!题意:Fibonacci数列的第0项为0,第1项为1,第2项也为1,此后第n项等于第n-1项与第n-2项的和。现在给你n,请你输出这个Fibonacci数列第n项的值的后4位数字(即对10000取模的结果)。 我的解题思路:标准矩阵快速幂,首先可以构造一个1×2的初值矩阵[ f(0) f(1) ],然后可以构造这样一个2原创 2015-01-24 18:44:11 · 767 阅读 · 0 评论 -
HDOJ-2608-0 or 1 解题报告
唯一分解定理,有点难,需要推理,也可以找规律。题意:定义T(n)为能整除n的所有正整数的和,S(n) = T(1) + T(2) + ... + T(n)。现在给你一个32位有符号整型范围类的数n,输出S(n)%2的值。 我的解题思路:首先根据定义T(n)为能整除n的所有正整数和,即T(n)就是n的所有正因子和。根据唯一分解定理的推论,一个整数n的唯一分解式是n = p1^原创 2015-02-13 15:37:16 · 818 阅读 · 0 评论 -
POJ-2773-Happy 2006 解题报告
欧拉函数好题。题意:给你一个数m,请你输出从1开始升序排列与m互素的数列中的第k个数。 我的解题思路:根据数据范围,K最大可以达到1E,比m还大,因此很容易想到数据会超过32位整型。而且要找m的第k个与m互素的数肯定不能用暴力枚举的办法。两个互素的数a,b它们满足gcd(a,b) = 1这个条件,根据gcd的这么一个性质gcd(a,b) = gcd(b,a%b)即gcd原创 2015-03-15 12:30:58 · 894 阅读 · 0 评论 -
POJ-2769-Reduced ID Numbers 解题报告
同余的应用,哈希。题意:给你G个学生的编号,编号为0~10^6的整数,请你找出最小的正整数m使得所有学生的编号对与模m不同余。 我的解题思路:从小到大枚举m然后哈希判断是否都不同余。我想到了一个小小的优化就是如果有n个学生的话,那么最小的正整数m至少是n,这个思想是基于容斥原理的。但是还是TLE了,最后看了讨论版才知道memset的优化,只memset用过的部分。优化后从T原创 2015-03-28 16:31:10 · 964 阅读 · 0 评论 -
POJ-3358-Period of an Infinite Binary Expansion 解题报告
欧拉定理,同余运算性质,好题。题意:给你两个整数p和q,请输出p/q作为小数在二进制表示下的第一个循环节在第几位小数和最小循环节长度。比如1/10的二进制小数表示为0.00011001100110011......那么1/10的最小循环节是0011,长度为4,它第一次出现是在第二位小数上。 我的解题思路:首先要把p/q转化成为最简真分数,也就是说p二进制思考可能比较难懂原创 2015-03-09 20:14:32 · 865 阅读 · 0 评论 -
HDOJ-1164-Eddy's research I 解题报告
分解质因数水题。题意:所有数都能够被分解成质因数的乘积,现在给你一个数,请输出这个数的质因数分解式。 我的解题思路:就是分解质因数,只是格式不太好处理而已。除了第一个质因数前面不要输出*,其他质因数前面都输出一个*就可以了。 我的解题代码:#include #include #include #include #include #inc原创 2015-02-17 19:14:14 · 767 阅读 · 0 评论 -
HDOJ-1397-Goldbach's Conjecture 解题报告
哥德巴赫猜想水题。题意:根据哥德巴赫猜想,任何一个大于等于4的数都能被分解成两个素数的和,现在给你一个数,求它的分解方式有多少种,如果一个数可以被分解成a+b,那么b+a不能够再计算一次。 我的解题思路:数据范围什么的都水,先筛个素数,然后一个一个循环判断,循环到n/2就可以了。 我的解题代码:#include #include #inclu原创 2015-02-17 19:08:23 · 891 阅读 · 0 评论 -
POJ-1284-Primitive Roots 解题报告
欧拉函数水题。题意:给出原根的定义,求模p的原根的个数。 我的解题思路:根据原根的性质,模p的原根个数为phi(phi(p)),直接求两次欧拉函数就好。 我的解题代码:#include #include #include #include #include #include #include using namespace std原创 2015-03-24 13:45:16 · 801 阅读 · 0 评论 -
POJ-2115-C Looooops 解题报告
扩展欧几里得算法,同余方程。题意:C风格的for循环语句是这样的,for (variable = A; variable != B; variable += C)假设A、B和C在计算机中都是k位无符号整数,现在问这个for循环语句会执行几次循环。 解题思路:既然是k位无符号整数,那么假设循环n次,就有A + nC = B(mod 2^k),这是一个同余方程,我们可以原创 2015-04-08 15:53:00 · 829 阅读 · 0 评论 -
UVaOJ-10168-Summation of Four Primes 解题报告
哥德巴赫猜想推广。题意:给一个数,如果它能被分解成四个素数的和,那么输出这四个素数,如果不能,输出指定信息。 我的解题思路:由于一个大于2的偶数能够被分解成两个素数的和,因此可以推出一个大于8的数必定能分解成4个素数的和。首先如果这个大于8的数是偶数,那么它能够被分解成两个偶数的和,再把这两个偶数根据哥德巴赫猜想分解,如果是奇数的话,那么它必定能分解成2,3和一个偶数的和,原创 2015-01-23 20:45:12 · 780 阅读 · 0 评论 -
POJ-2262-Goldbach's Conjecture 解题报告
验证哥德巴赫猜想。题意:任何一个大于4的偶数都能写成两个奇素数的和。现在给你一个大于等于6的数n,请你分解成n = a + b的形式,并且a和b都是奇素数,如果有多组分解形式,要求输出b - a最大的那种。如果不能够分解,输出指定的信息。 我的解题思路:首先,根据计算机科学家运行的结果,在ACM的世界里(64位整型范围内),哥德巴赫猜想是成立的,所以一定能够分解。因此将范围原创 2015-01-23 20:01:58 · 777 阅读 · 0 评论 -
HDOJ-2136-Largest prime factor 解题报告
不错的筛素数题。题意:任何数都可以分解成素数的乘积,现在你的任务是告诉过我一个数的最大素因子在素数表里面的位置,比如2的位置是1,3的位置是2,5的位置是3,等等。当然了,特殊情况1的最大素因子在素数表的位置是0。 我的解题思路:看样例明显是多组测试数据,数据范围又达到了100W,有一种这题要离线的直觉。果然,我第一次做先筛出素数表,然后针对每一个数来根据素数表算最大素因子原创 2015-01-13 14:42:57 · 968 阅读 · 0 评论 -
POJ-2407-Relatives 解题报告
水题,求欧拉函数单值。题意:给一个不超过10亿的数,算出不大于它且与它互素的正整数个数,就是求它的欧拉函数值。 我的解题思路:没什么好说的,就是求欧拉函数单值,数据不多,不需要打欧拉函数表。 我的解题代码:#include #include #include #include #include #include using name原创 2015-01-31 17:20:46 · 661 阅读 · 0 评论 -
HDOJ-1787-GCD Again 解题报告
求欧拉函数单值,水题。题意:给你一个数n,求出大于0小于n的正整数中与n的最大公约数大于1的数的个数。 我的解题思路:与n的公约数大于1的数的个数就是与n不互素的数的个数。这里有个坑,首先就是小于n,因此输出应该是n - 1 - phi(n)。 我的解题代码:#include #include #include #include #inc原创 2015-01-31 18:17:37 · 658 阅读 · 0 评论 -
HDOJ-1920-Jackpot 解题报告
求多个数的最小公倍数,水题。题意:简单说吧,老虎机有几个转盘,每一个转盘停留在jackpot上都有一个固定的周期,如果所有转盘都停留在jackpot上,那么就可以赢钱,现在要求赢钱的周期,如果大于指定的数就要给出指定的信息。 我的解题思路:每个转盘的周期求最小公倍数就可以了,考虑一下边界情况只有一个转盘的情况就行了,另外根据题意如果最小公倍数大于10^9的话就输出“More原创 2015-02-03 13:59:31 · 733 阅读 · 0 评论 -
HDOJ-1905-Pseudoprime numbers 解题报告
快速幂和判断素数。题意:如果a^p mod p = a mod p且p不为素数,那么称p为基于a的伪素数,现在给你p和a,问p是不是基于a的伪素数。 我的解题思路:很简单,判断一下p是否为素数,然后快速幂求a^p mod p的值就行了,由于a比p小,所以a mod p肯定还是a,就不用判断是否等于a mod p了,另外必须要用64位整型,不然会溢出。原创 2015-02-04 14:20:32 · 684 阅读 · 0 评论 -
HDOJ-1299-Diophantus of Alexandria 解题报告
好题,用到唯一分解定理的推广。题意:给一个整数n(1 我的解题思路:因为x和y都是正整数,所以1/x和1/y都大于1,所以1/x和1/y都小于1/n,可知x和y都会大于n。那么假设x = n + a,y = n + b,这样的话将等式化为xy = n(x+y)后再代入化简就得到n^2 = ab,这样就是求a和b有多少种组合了,说白了,就是求n^2的因数个数。求一个正整数的原创 2015-02-03 19:13:13 · 617 阅读 · 0 评论 -
POJ-3090-Visible Lattice Points 解题报告
欧拉函数题。题意:一个在第一象限的格点(x,y),x和y可以为0且x和y必须是整数。如果一条线段从原点到这个格点不经过其他格点,那么我们称这个格点是有价值的。现在给你范围n,请你求x和y不大于n的情况下有多少有价值的格点。 我的解题思路:首先,如果从原点到(x,y)这个格点的线段经过其他格点,假设这个格点为(a,b),那么容易知道x / a = y / b,假设等于c,可以原创 2015-02-04 15:02:04 · 835 阅读 · 0 评论 -
HDOJ-5019-Revenge of GCD 解题报告
求k大GCD。题意:给三个正整数x,y和k,求x和y的第k大公约数。 我的解题思路:首先根据求最大公约数的原理,k大公约数是最大公约数的因子。那么求k大公约数就转换成为了求最大公约数的第k大因子。可以通过唯一分解定理得到最大公约数的因子个数,然后根据情况判断是否枚举。 我的解题代码:#include #include #include #i原创 2015-02-05 19:07:11 · 856 阅读 · 0 评论 -
LA-3883 & POJ-3518 Prime Gap 解题报告
筛素数的水题。题意:给一个整数n,求n后一个素数和前一个素数的差值,如果n是素数时输出0。 我的解题思路:数据范围不太大,不过为了保险起见还是要离线处理。筛出范围内的素数表,然后就可以一次性算出所有数的答案,保存起来,这样查询速度会很快。 我的解题代码:#include #include #include #include #includ原创 2015-01-19 10:40:17 · 867 阅读 · 0 评论 -
HDOJ-1395-2^x mod n = 1 解题报告
欧拉定理,可暴力。题意:给一个整数n求满足2^x = 1(mod n)的最小x(x > 1)。 我的解题思路:根据欧拉定理及其推广,当n与2互素时2^phi(n) = 1(mod n),因此容易得知当n为奇数时n与2互素。当n为偶数或者1时则必定不能满足2^x = 1(mod n)。另外,当n与2互素时phi(n)不一定是满足要求的最小x,但是根据欧拉定理的推广,最小x必定原创 2015-02-06 18:13:52 · 741 阅读 · 0 评论 -
POJ-1365-Prime Land 解题报告
分解质因数水题。题意:给出n按照唯一分解定理分解出的质因数和幂,请输出n-1分解后的质因数和幂,注意顺序。 我的解题思路:只是输入不太方便而已,需要用字符串输入,一次输入一行,输入完以后就处理数据就行了。 我的解题代码:#include #include #include #include #include #include usi原创 2015-02-08 20:32:14 · 821 阅读 · 0 评论 -
POJ-1411 & HDOJ-1239 Calling Extraterrestrial Intelligence Again 解题报告
筛素数并且需要优化技巧的题,当然暴力貌似也能过,不推荐暴力。题意:很简单,给你三个正整数m,a,b(其中4 1 )。现在让你找到两个素数p和q,使得pq 我的解题思路:如果是暴力的话筛出m最大值以内的素数然后开始从小到大枚举p的值就是了,很明显q必定大于等于p。我初步优化的话通过a/b 我的解题代码:#include #include原创 2015-01-20 11:00:13 · 884 阅读 · 0 评论 -
UVaOJ-11827-Maximum GCD 解题报告
求多个数最大GCD,数据小,优化无用武之地。题意:给你若干个整数,对任意两个整数的最大公约数求最大值并输出。 我的解题思路:首先给你n个测试样例,但是每个测试样例里面有多少个数不知道,所以这里要用字符串处理掉。数据不大,暴力应该也是可行的。如果测试样例的数据比较大的话可以这样优化,先给这一组数降序排序,然后开始从大到小枚举,如果枚举的数不大于当前已知的最大GCD,那么就可以原创 2015-01-21 11:49:13 · 790 阅读 · 0 评论 -
UVaOJ-10539-Almost Prime Numbers 解题报告
筛素数好题。题意:几乎是素数的数是这样一种数,它不是素数,但是它只有一个素因子。比如:4,8,9等。现在给你一个区间,让你统计区间内几乎是素数的数的个数。 我的解题思路:这个区间范围很大,右端点可以达到10的12次方。分析一下可以知道几乎是素数的数是素数的n次方(n > 2)。因此筛素数的范围到10的6次方就可以了。因为区间范围大,但是统计的数却不多,因此我们可以把最大范围原创 2015-01-21 14:19:23 · 813 阅读 · 0 评论 -
HDOJ-1211-RSA 解题报告
同余方程或快速幂水题。题意:RSA加密算法是这样的,1.选择两个大素数p和q2.计算n = p × q,F(n) = (p - 1) × (q - 1)3.选择一个整数e(1 4.计算一个整数d,使得d × e = 1 (mod F(n)),d 就是密钥加密用这个方法C = E(m) = m^e mod n解密用这个方法M = D(c) = c^d mod n现原创 2015-04-09 15:23:34 · 864 阅读 · 0 评论