
数论
文章平均质量分 60
Rocky0429
我愿能朝着太阳生长,做一个温暖的人。
展开
-
POJ 1006-Biorhythms(CRT)
题意:人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天开始,算出最少 再过多少天后三个峰值同时出现。 思路:中国剩余定理(CRT)的互质板子题。 对于中国剩余定理的表述原创 2015-09-15 20:34:40 · 1276 阅读 · 0 评论 -
HDU 4349-Xiao Ming's Hope(Lucas定理的推广)
题目地址:HDU 4349 题意:求C(n,0),C(n,1),C(n,2)…C(n,n).当中有多少个奇数(1<=n<=10^8) 思路: 在这里首先给出一个判断组合数奇偶性的一个规律:如果(n&m)==m,那么C(n,m)为奇数,否则为偶数 咱这里涉及的数值太大,所以并不能用。 其实本题是Lucas定理推导题,我们分析一下 C(n,m)%2,那么由lucas定理,我们可以写成二进制的形原创 2015-08-31 10:36:04 · 788 阅读 · 1 评论 -
HDU 5391-Zball in Tina Town(数论)
题目地址:HDU 5391 题意: Tina Town 是一个善良友好的地方,这里的每一个人都互相关心。Tina有一个球,它的名字叫zball。zball很神奇,它会每天变大。在第一天的时候,它会变大11倍。在第二天的时候,它会变大22倍。在第nn天的时候,它会变大nn倍。zball原来的体积是11。Tina想知道,zball在第n-1n−1天时的体积对nn取模是多大呢?Tina是一个蠢蠢的女孩原创 2015-08-16 18:56:51 · 1403 阅读 · 0 评论 -
HDU 3944-DP?(Lucas定理+预处理)
题目地址:HDU 3944 题意:告诉你在一个在杨辉三角中的点(第n行m列),问你从(0,0)点走到该点经过的点最少的权值和(只能向下走或斜着走)。同时对素数p取余 思路:根据已知的那个点(n,m),如果 n/2 >= m ,那么从已知点出发,可以一直往斜的方向走,直到边界,那么 权值和就为 C(n,m)+C(n-1,m-1)……. 然后由组合数的公式两两合并可以得到 C(n+1,m)+(n-m原创 2015-08-29 13:37:28 · 1622 阅读 · 0 评论 -
ZOJ 3557-How Many Sets II(Lucas定理+插板法求组合数)
题目地址:ZOJ 3557 题意:给一个集合,一共n个元素,从中选取m个元素,满足选出的元素中没有相邻的元素,一共有多少种选法(结果对p取模1 <= p <= 10^9) 思路:用插板法求出组合数。既然是从n个数中选择m个数,那么剩下的数为n-m,那么可以产生n-m+1个空,这道题就变成了把m个数插到这n-m+1个空中有多少种方法,即C(n-m+1,m)%p。然后就Lucas定理上去乱搞。因为这原创 2015-08-29 14:58:37 · 1664 阅读 · 0 评论 -
51Nod 1256-乘法逆元(扩展欧几里德)
题目地址:51Nod 1256 题意:给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。 思路:K*M%N=1可以写成K*M-Y*N=1,这样公式就变成了扩展欧几里德求K值。因为是要求最小的,所以求出特解K以后,要变成(K%N+N)%N。#include <stdio.h>#include <math原创 2015-08-30 18:05:41 · 1417 阅读 · 0 评论 -
FZU 2020-组合(Lucas定理+逆元解决大组合数求模)
题目地址:FZU 2020 题意:求C(n,m)%p的值(1 <= m <= n <= 10^9, m <= 10^4, m < p < 10^9, p是素数)。 思路: 对于和并且p是素数,我们一般采用Lucas定理来解。 1).Lucas定理是用来求 C(n,m) mod p的值,p是素数。其描述为: 如果 那么得到 即 Lucas(n,m,p)=C(n%p,m%p)*原创 2015-08-28 15:56:09 · 1809 阅读 · 0 评论 -
HDU 3939-Sticks and Right Triangle(毕达哥拉斯三元组+欧拉函数)
题目地址:HDU 3939 题意:给出勾股方程X^2+Y^2=Z^2,满足X,Y,Z不超过L,问存在多少个解满足X,Y,Z两两互素。 思路:其实就是求有多少个毕达哥拉斯本原三元组,因为数据很大,所以不能像上一道题一样,直接暴力枚举。那下面我们来分析一下: 由X^2+Y^2+Z^2我们可以知道,方程的解为X=m^2-n^2,Y=2*m*n,Z=m^2+n^2,其中m>n,m与n一奇一偶,且gcd原创 2015-08-26 14:51:42 · 1743 阅读 · 0 评论 -
Codeforces Round #315-Codeforces Round #315(贝尔数)
题目地址:New Language 题意:求1到n,n个元素组成的集合中,满足对称性和传递性但不满足自反性的二元组关系集合的个数。 思路:对于每组的对应关系中,正好满足贝尔数(其实是贝尔三角形每行的和) 由图中红框中可以发现上一行的总和=下一行的n-1位置上的数。然后其实上贝尔数的板子就好了。#include <stdio.h>#include <math.h>#include <st原创 2015-08-12 09:11:11 · 1762 阅读 · 0 评论 -
POJ 1305-Fermat vs. Pythagoras(毕达哥拉斯三元组的解)
题目地址:POJ 1305 题意:给一个整数N,求N范围内的本原的毕达哥拉斯三元组的个数,以及N以内毕达哥拉斯三元组不涉及数的个数。 思路: 首先我们先来了解一下一些基本的定义 毕达哥拉斯三元组: 设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组。 本原毕格拉斯三元组: 在毕格拉斯三元组的基础上,若gcd(x,y,z)=1,则称为本原的原创 2015-08-25 21:25:27 · 2230 阅读 · 0 评论 -
POJ 2142-The Balance(扩展欧几里德)
题目地址:POJ 2142 题意:有两种类型的砝码质量分别为a和b,要求称出质量为d的物品,要求a的数量x和b的数量y的和x+y最小,若有多个x+y的值,取ax+by最小的。 思路:我们应该求ax+by=d。这里我们应用扩展欧几里德求出ax+by=gcd(a,b),那么ax/gcd(a,b)+by/gcd(a,b)=1,然后求出来特解,令x=x*n,把x转化为最小正值,即x=(x%b+b)%b,原创 2015-08-25 20:25:42 · 1659 阅读 · 0 评论 -
POJ 2661-Factstone Benchmark(log()的应用)
题目地址:POJ 2661 题意:从1960年开始,每10年更新一次计算机的最长存储位数,其中,最开始的1960年字长为4位,以后每隔10年就增长一倍的长度。给你一个年份,问这一年时,计算机可以执行n!而不溢出的最大的n值。 思路:第n年的位数k=2^(2+(y-1960)/10),能放在k位中最大的无符号整数是(2^k)-1,如果是直接求不大于(2^k)-1的n!很容易溢出且速度慢,那么我们就原创 2015-08-17 16:04:09 · 1708 阅读 · 0 评论 -
51Nod 1135-原根(快速求解一个素数的原根)
题目地址:51Nod 1135 1.原根定义:设m>1,gcd(a,m)=1,使得成立的最小的r,称为a对模m的阶。 2.定理:如果模m有原根,那么他一共有个原根。 3.定理:如果p为素数,那么素数p一定存在原根,并且模p的原根的个数为个。 4.定理:假设m是正整数,a是整数,如果a模m的阶等于,则称a为模m的一个原根。 5.模m有原根的充要条件:m=2,4,P^a,2*P^a……. 求原创 2015-08-19 15:51:44 · 8539 阅读 · 2 评论 -
POJ 1284-Primitive Roots(欧拉函数求原根个数)
Primitive RootsTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1284Appoint description: System Crawler (2015-04-06)Descripti原创 2015-04-06 20:15:16 · 1555 阅读 · 0 评论 -
BZOJ 2186-[Sdoi2008]沙拉公主的困惑(乘法逆元)
题目地址:BZOJ 2186 题意:求1~n!中与m!互质的数的个数,且m<=n(1 < = n , m < = 10000000) 思路:因为m<=n,所以m!能被n!整除,那么我们很容易推出下面结论: 对于两个正整数n和m,,如果n是m的倍数,那么1~n中与m互质的数的个数为n/m*Eular(m)。 因为欧拉函数的通式为:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(原创 2015-10-03 15:10:22 · 1406 阅读 · 0 评论 -
ZOJ 2674-Strange Limit(指数循环节)
题目地址:ZOJ 2674 题意:已知a1=p,an+1=p^an,bn=an(mod m!),给定p和m,求bn的极限。 思路:我们知道 我们设 那么存在 然后y又可以看作是x的子问题,然后一直递归可以求得最后的结果。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#in原创 2015-10-03 19:58:17 · 1330 阅读 · 0 评论 -
HDU 2588-GCD(欧拉函数)
题目地址:HDU 2588 题意:给两个数n,m(2<=n<=1000000000, 1<=m<=n), 求1<=x<=n 且gcd(x,n)>=m的个数x的个数。 思路:因为x要满足1<=x<=n 且gcd(x,n)>=m,所以x为n的因子,即gcd(x,n)=x>=m,设y=n/x,则y的欧拉函数为小于y且与y互质的数的个数。假设与y互质的数为p1,p2,p3……,那么gcd(x*pi,n)原创 2015-10-04 21:01:35 · 1408 阅读 · 0 评论 -
FZU 1759-Super A^B mod C(指数循环节)
题目地址:FZOJ 1759 题意:求 A^B mod C的值(1<=A,C<=1000000000,1<=B<=10^1000000). 思路:此题的B值特别的大,我们要实行降幂处理,其实有这么一个公式可以解决: #include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <ios原创 2015-10-03 17:08:37 · 2029 阅读 · 0 评论 -
HDU 5446-Unknown Treasure(Lucas+中国剩余定理)
题目地址:HDU 5446 题意:求C(N,M)%P的结果,P为k个素数的乘积。(1≤m≤n≤10^18,1≤k≤10) 思路:先用Lucas定理求出a[]数组,再用CRT求出最终的结果x。比赛时这道题坑了俩小时,还是用的不互质的板子过的,不知道为什么用互质的CRT板子一直Wa,sad。#include <stdio.h>#include <math.h>#include <string.h原创 2015-09-14 19:21:19 · 1293 阅读 · 0 评论 -
HDU 5428-The Factor(分解质因子)
题目地址:HDU 5428 题意: 思路:分解每个数的质因子,将他们保存在sprime数组中(可重复),如果个数小于两个,输出-1,否则的话将sprime数组排序,输出最小的两个数的乘积#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#includ原创 2015-09-06 19:12:50 · 753 阅读 · 0 评论 -
HDU 1792-A New Change Problem(互质数的最大不能表示数)
题目地址:HDU 1792 题意:两个互质的数A,B且A*x+B*y(x>=0,y>=0)求最大不能表示的数,和不能表示的数的个数。 思路:最大不能表示的数是A*B-A-B,个数是(A-1)*(B-1)/2。详细推导#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iost原创 2015-08-21 10:33:13 · 3049 阅读 · 0 评论 -
HDU 2582-f(n)(求n个组合数最大公约数的和)
题目地址:HDU 2582 题意:给出公式Gcd(n)=gcd(C[n][1],C[n][2],……,C[n][n-1]),让求f(n)= Gcd(3)+Gcd(4)+…+Gcd(i)+…+Gcd(n)。 思路:对于来说,有以下三种 (1),如果n为素数,那么G=n; (2),如果n有多个素因子,那么G=1; (3),如果n只有一个素因子,那么G=该素因子。#include <stdio.原创 2015-08-21 09:49:22 · 2493 阅读 · 0 评论 -
HDU 2685-I won't tell you this is about number theory(gcd(A^m-B^m,A^n-B^n)化简)
题目地址:HDU 2685 题意:求 gcd(a^m-1,a^n-1)%k的值。 思路:根据公式gcd(A^m-B^m,A^n-B^n)= A^gcd(m,n) - B^gcd(m,n)。在此处B^m和B^n值为1,所以就将原公式的B代换为1。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>原创 2015-08-20 20:53:50 · 2050 阅读 · 0 评论 -
NEFU 117-素数个数的位数(素数定理)
题目地址:NEFU 117 题意:给你一个整数N(1#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#include <algorithm>#include <set>#include <queue>#incl原创 2015-08-20 20:23:01 · 1427 阅读 · 0 评论 -
NYOJ 461-Fibonacci数列(四)(求斐波那契数列前4位)
题目地址:NYOJ 461思路:斐波那契数列的通项公式为然后下一步考虑如何产生前4位:先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)【用科学记数法表示这个数】=log10(1.0234432)+7;log10原创 2015-07-10 18:48:09 · 2651 阅读 · 0 评论 -
POJ 3318-Matrix Multiplication(压缩矩阵用o(n^2)的方法求矩阵相等)
题目地址:POJ 3318 题意:有3个n*n的矩阵A,B,C,问AB是否等于C。 思路:题目描述很简单,就是用矩阵乘法,但是很明显矩阵乘法的时间复杂度为O(n^3),很明显超时。那怎么改进呢?就是用压缩矩阵的方法: 设矩阵R是1*n的矩阵,根据矩阵的性质,若A*B*R=C*R,那么A*B=C。由此可以看出来,虽然多成了一个矩阵,但是时间复杂度成了O(n^2)。那么问题是这个R的行列式该怎么设原创 2015-07-28 10:51:56 · 1707 阅读 · 0 评论 -
HDU 5317(2015多校3)-RGCDQ(数论)
题目地址:HDU 5371 题意:每次T(1000000)次询问,每次询问有一个区间[L, R] (2 <= L < R <= 1000000 )。 f(i) 表示的是数i的素因子种类数。 然后求这个区间内GCD(f(i), f(j))的最大值,(L <= i < j <= R )。 思路:2*3*5*7*9*11*13=270270<1e6<2*3*5*7*9*11*13*17=4594590原创 2015-07-29 16:18:52 · 1467 阅读 · 0 评论 -
POJ 2635-The Embarrassed Cryptographer(高精度求模+同余模定理)
The Embarrassed CryptographerTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 2635Appoint description: System Crawler (2015-05-28)原创 2015-05-28 21:29:15 · 1498 阅读 · 0 评论 -
POJ 1019- Number Sequence(规律定位)
Number SequenceTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1019Appoint description: System Crawler (2015-05-22)Descripti原创 2015-05-28 11:44:29 · 1326 阅读 · 0 评论 -
POJ 3252- Round Numbers(求区间中二进制数中0个数大于1的数的总数)
Round NumbersTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 10008 Accepted: 3628DescriptionThe cows, as you know, have no fingers or thumbs and thu原创 2015-05-27 11:56:42 · 1542 阅读 · 0 评论 -
POJ 1006-Biorhythms(中国剩余定理)
BiorhythmsTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1006Appoint description: clzls (2015-03-14)System Crawler (2015-04-25原创 2015-05-01 21:11:36 · 1216 阅读 · 0 评论 -
POJ 2407-Relatives(直接法求一个整数的欧拉函数值)
RelativesTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 2407Appoint description: System Crawler (2015-04-04)Description原创 2015-04-06 20:40:56 · 1353 阅读 · 0 评论 -
POJ 1385-Binary Stirling Numbers(判断第二类斯特林数的奇偶性)
Binary Stirling NumbersTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1430Appoint description: System Crawler (2015-04-22)D原创 2015-04-22 20:57:42 · 1722 阅读 · 0 评论 -
Zoj 3846-GCD Reduce(数论)
GCD ReduceTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluSubmit Status Practice ZOJ 3846DescriptionYou are given a sequence {A1, A2, ..., AN}. You task i原创 2015-03-23 15:14:41 · 1677 阅读 · 0 评论 -
HDU 5187-zhx's contest(快速乘法+快速幂取模)
zhx's contestTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1277 Accepted Submission(s): 413Problem DescriptionAs one of the原创 2015-03-21 22:08:28 · 1537 阅读 · 0 评论 -
反正切函数的应用
反正切函数的应用Crawling in process...Crawling failedTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmitStatus Description反正切函数可展开成无穷级数,有如下公式 (其中0原创 2014-07-29 23:31:10 · 3084 阅读 · 0 评论 -
Rightmost Digit(简单数论_幂取模)
Rightmost DigitCrawling in process...Crawling failedTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatus DescriptionGiven a positive integer原创 2014-08-06 10:29:32 · 1160 阅读 · 0 评论 -
POJ 1845-Sumdiv(快速幂取模+整数唯一分解定理+约数和公式+同余模公式)
SumdivTime Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1845Appoint description: System Crawler (2015-05-27)Description原创 2015-05-29 15:57:09 · 2968 阅读 · 0 评论 -
POJ 3292-Semi-prime H-numbers(筛选法)
Semi-prime H-numbersTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 3292Appoint description: lijunle (2011-08-04)System Crawler (原创 2015-05-29 11:38:22 · 1407 阅读 · 0 评论 -
POJ 2115- C Looooops(扩展欧几里德)
C LooooopsTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 2115Appoint description: System Crawler (2015-05-26)Description原创 2015-05-31 15:30:46 · 1682 阅读 · 0 评论