
数论
ramay7
Life is not short,but float.
展开
-
BZOJ 2818 Gcd(gcd(x,y)为素数/欧拉函数/莫比乌斯反演)
题目链接: BZOJ 2818 Gcd 题意: x∈[1,N],y∈[1,N],gcd(x,y)=素数的有序对(x,y)的对数。x\in [1,N],y\in [1, N],gcd(x,y)=素数的有序对(x,y)的对数。 分析: 对于一个素数p,如果gcd(x,y)=p,那么相当于x∈[1,Np],y∈[1,Ny]的(x,y)的对数,又因为是有序对,需要乘以2,那么就是∑Npi=12∗ϕ原创 2016-06-04 14:55:04 · 1570 阅读 · 0 评论 -
HDU 3923 Invoker(Polya原理+费马小定理)
题目链接: HDU 3923 Invoker 题意: tt种颜色来涂nn颗珠子的项链,问本质不同的珠子有多少个?考虑翻转和旋转。结果mod1000000007mod 1000000007 分析: 模版题。需要注意最后需要除以2n2n,又因为结果%1000000007,可以用费马小定理,相当于乘以quickpow(2∗n,1000000005).quick_pow(2*n, 10000000原创 2016-06-10 23:26:00 · 598 阅读 · 0 评论 -
POJ 2154 Color(Polya原理+欧拉函数)
题目链接: POJ 2154 Color 题意: nn个颜色涂nn个珠子的项链,考虑旋转,求本质不同的项链数?, 分析: 根据PolyaPolya原理可得Ans=∑i=1nngcd(n,i)=∑d=1d=nnd∑i=1i=n[gcd(n,i)==d]=∑d=1nnd∑i=1n[gcd(nd,id)==1]=∑d=1nnd∗ϕ(nd) Ans原创 2016-06-09 21:37:34 · 564 阅读 · 0 评论 -
POJ 2689 Prime Distance(区间相邻素数最大、小距离,区间素数筛)
题目链接: POJ 2689 Prime Distance 题意: 求出区间[a, b]内相邻素数的最大距离和最小距离。 分析: 区间素数筛。然后枚举所有区间素数。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>原创 2016-05-31 01:26:45 · 920 阅读 · 0 评论 -
LightOJ 1197 Help Hanzo(区间素数筛)
题目链接: LightOJ 1197 Help Hanzo 题意: 给出区间左右端点[a, b]输出区间内素数个数。a < b, a,b属于int, b - a <= 1e5。 分析: [a, b]区间的每个合数可以用[2, m](m = sqrt(b))中的所有数筛掉。#include <iostream>#include <cstdio>#include <cstring>#in原创 2016-05-31 01:25:39 · 569 阅读 · 0 评论 -
HDU 2161 Prime(判断素数)
题目链接: HDU 2161 Prime 题意: 简单的判断素数。 分析: 注意根据题目要求特判1,2.#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ct原创 2016-05-31 01:23:47 · 552 阅读 · 0 评论 -
POJ 2115 C Looooops(扩展欧几里德)
题目链接: POJ 2115 C Looooops 题意: 有一个循环语句,变量从A开始,每次都要+C,终止条件是变量==B,每次累加都要mod 2^k.问循环最多执行几次?或者永远循环, 分析: 令K = 2^k.设循环执行了x次则:(A + C * x) mod K = B,也就是A + C * x = B + K * y. 移项可得:C * x - K * y = B - A.那么原创 2016-05-31 01:22:42 · 511 阅读 · 0 评论 -
URAL 1226 Little Chu(最大原根)
题目链接: URAL 1226 Little Chu* 题意: 找到最大的k,使得k, k^2, k^3…k^x 模n的结果各不相同且x尽可能大。 分析: 求最大原根。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climit原创 2016-05-31 01:21:35 · 401 阅读 · 0 评论 -
POJ 3090 Visible Lattice Points(欧拉函数)
题目链接: POJ 3090 Visible Lattice Points 题意: 给你一个方格,问从最左下角最多能看到多少点? 分析: 其实还是欧拉函数~#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#in原创 2016-05-31 01:20:29 · 515 阅读 · 0 评论 -
UVA 10820 Send a Table(欧拉函数)
题目链接: UVA 10820 Send a Table欧拉函数。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ctime>#include <cassert>原创 2016-05-31 01:19:17 · 619 阅读 · 0 评论 -
POJ 2478 Farey Sequence(n级法雷数列的元素个数)
题目链接: POJ 2478 Farey Sequence 题意: 求n级法雷数列的元素个数。(不包含0/1, 1/1) 分析: 考虑n级法雷数列比n-1级法雷数列多出来的元素,可以得到:f[n] = f[n - 1] + euler[n]#include <iostream>#include <cstdio>#include <cstring>#include <string>#原创 2016-05-31 01:18:17 · 1146 阅读 · 0 评论 -
POJ 2891 Strange Way to Express Integers(中国剩余定理)
题目链接: POJ 2891 Strange Way to Express Integers 题意: 给出x模m[i]的余数a[i],求x。 分析: 中国剩余定理。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>原创 2016-05-31 01:17:06 · 433 阅读 · 0 评论 -
HDU 4542 小明系列故事——未知剩余系(反素数+最小的n使得n的约数为n-k(k已知))
题目链接: HDU 4542 小明系列故事——未知剩余系#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ctime>#include <cassert>#def原创 2016-06-11 23:34:58 · 495 阅读 · 0 评论 -
Codeforeces 27 E Number With The Given Amount Of Divisors(反素数)
题目链接: Codeforeces 27 E Number With The Given Amount Of Divisors 题意: 给出nn找到最小的数使得其约数个数恰为nn。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <c原创 2016-06-11 23:37:59 · 355 阅读 · 0 评论 -
HDU 3221 Brute-force Algorithm(指数降幂公式)
题目链接; HDU 3221 Brute-force Algorithm 题意: 根据递归可以得到f[1]=a,f[2]=b,f[n]=f[n−1]∗f[n−2](n≥3)f[1]=a, f[2]=b,f[n]=f[n-1]*f[n-2](n\geq 3),给出a,b,p,na,b,p,n求f[n]%p的值。f[n]\% p的值。 数据范围:1≤n≤1000000000,1≤P≤100000原创 2016-07-17 12:16:57 · 1439 阅读 · 0 评论 -
UVA 11916 Emoogle Grid(离散对数、BSGS算法)
题目链接: UVA 11916 Emoogle Grid 分析: 处理得到最后会得到需要求解式子:ax=b(modp)a ^ x = b (mod p),其中a,b,pa, b, p已知,求xx的最下解。保证有解。 离散对数。用到了BSGS(大步小步算法)。#include <iostream>#include <cstdio>#include <cstring>#include <s原创 2016-07-15 19:16:35 · 540 阅读 · 0 评论 -
POJ 2888 Magic Bracelet(Polya计数+dp+矩阵快速幂+欧拉函数+乘法逆元)
题目链接: POJ 2888 Magic Bracelet 题意: 有一串nn个珠子的项链,用mm种颜色来染,有kk个限制条件:a[i]和b[i]a[i]和b[i]不能相邻。问本质不同的项链有多少种?(考虑旋转,答案对99739973取模,且gcd(n,9973)=1gcd(n,9973)=1)。数据范围:n≤109,1≤m≤10,0≤k≤m∗(m−1)2n \leq 10^9,1\leq原创 2016-07-10 19:49:03 · 912 阅读 · 0 评论 -
HDU 2481 Toy(Polya综合)
题目链接: HDU 2481 Toy 题意: 有外围nn个点围着中心一个点,中心有nn条边和外围相连,外围的相邻点有一条边,现在需要从中去除nn条边,使得剩下的n+1n+1个点依然保持两两连通,考虑旋转,问有多少种方案?方案数对MM取模。 数据范围:3≤n≤109,2≤M≤1093 \leq n \leq 10^9, 2\leq M \leq 10^9. 分析: 我觉得这种考验智商的题目原创 2016-07-12 14:50:53 · 697 阅读 · 0 评论 -
POJ 3243 Clever Y(扩展BSGS,gcd(a,p)!=1)
题目链接: POJ 3243 Clever Y 题意: 跟[POJ 2417 Discrete Logging]类似,只不过gcd(a,p)!=1gcd(a,p)!=1. 分析; 初始化cnt=0cnt = 0(消因子轮数),d=1 d = 1(消掉的gcdgcd乘积). 令tmp=gcd(a,p)tmp = gcd(a, p) 当tmp!=1tmp != 1时,修改变量值:b/=tmp原创 2016-07-13 20:51:40 · 945 阅读 · 2 评论 -
POJ 2417 Discrete Logging(BSGS算法,gcd(a,p)=1)
题目链接: POJ 2417 Discrete Logging 题意: 求ax≡b(modp)a^x ≡ b(mod p)的最小xx。(pp为素数,2≤a<p,1≤b<p2\leq a<p, 1\leq b<p) 分析: BSGS算法。BSGS算法。 一开始用mapmap一直TT,参(zhao)考(ban)了这里 用了hashhash才过。。。BSGSBSGS算法用于求解:ax=b(m原创 2016-07-13 20:36:54 · 785 阅读 · 0 评论 -
HDU 4349 Xiao Ming's Hope(Lucas定理、C[n][m]为奇数的个数)
题目链接: HDU 4349 Xiao Ming’s Hope 题意: 给定nn求Cmn(0≤m≤n,n≤108)为奇数的mC_{n}^{m}(0\leq m\leq n,n\leq 10^8)为奇数的m个数。 分析: 即Cmn %2=1的m个数C_{n}^{m}\ \%2=1的m个数,考虑将n和mn和m都表示成22的幂次组合形式,则任意的系数ni和min_i和m_i非0即1.因为C00=原创 2016-07-01 22:54:43 · 527 阅读 · 0 评论 -
FZU 2020 组合(Lucas定理)
题目链接:FZU 2020 组合#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ctime>#include <cassert>#define IOS ios_b原创 2016-07-01 22:12:15 · 608 阅读 · 0 评论 -
HDU 4373 Mysterious For(Lucas定理、中国剩余定理)
题目链接: HDU 4373 Mysterious For 题意: 定义两种循环: for(int a[i]=0;a[i]<n;++a[i])...for(int\ a[i] = 0; a[i] < n; ++a[i]) { \\...\\ } for(int a[i]=a[i−1];a[i]<n;++a[i])...for(int\ a[i] = a[i-1]; a[i] < n; +原创 2016-07-10 11:10:46 · 1874 阅读 · 0 评论 -
POJ 2773 Happy 2006(求第k个和m互素的数/欧拉函数)
题目链接: POJ 2773 Happy 2006 题意: 求第kk个和mm互素的数。m<=106,k<=108m<=10^6,k<=10^8 分析:如果gcd(a,m)=1gcd(a,m)=1,那么gcd(a+k∗m,m)=1,k∈Zgcd(a+k*m,m)=1,k\in Z证明:只需要证明gcd(a+m,m)=1gcd(a+m, m)=1.令d=gcd(a+m,m)d=gcd(a+m原创 2016-06-06 21:39:46 · 596 阅读 · 0 评论 -
HDU 2521 反素数(区间反素数)
题目链接: HDU 2521 反素数 题意: 求出区间[a,b]约数最多的数。求出区间[a,b]约数最多的数。 分析: 先求[1,b][1,b]中约数最多的数ansans,如果ans∉[a,b]ans\notin [a,b]那就暴力跑。本身这题数据也不大。#include <iostream>#include <cstdio>#include <cstring>#include <s原创 2016-06-11 23:42:40 · 608 阅读 · 0 评论 -
POJ 1006 Biorhythms(中国剩余定理)
题目链接: POJ 1006 Biorhythms中国剩余定理#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ctime>#include <cassert>#原创 2016-05-31 01:15:58 · 493 阅读 · 0 评论 -
HDU 2669 Romantic(扩展欧几里德)
题目链接: HDU 2669 Romantic、 题意: 求X*a + Y*b = 1最小非负整数解x和相应的y. 分析: 扩展欧几里德求出来基础解后稍微处理下就好了。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climit原创 2016-05-31 01:14:51 · 377 阅读 · 0 评论 -
LightOJ 1259 Goldbach`s Conjecture(证明哥德巴赫猜想)
题目链接: LightOJ 1259 Goldbach`s Conjecture 题意: 验证哥德巴赫猜想:大于2的所有偶数都可以表示为两个素数的之和。 n <= 1e7 分析: 素数打表,暴力解。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>原创 2016-05-29 11:45:23 · 703 阅读 · 0 评论 -
LightOJ 1282 Leading and Trailing(n^k的高三位和低三位)
题目链接: LightOJ 1282 Leading and Trailing 题意: 给出n和k求出n^k的高三位和低三位。 分析: 低三位别忘了%03d输出啊! 高三位取log瞎搞啊!#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#incl原创 2016-05-29 11:44:15 · 438 阅读 · 0 评论 -
LightOJ 1341 Aladdin and the Flying Carpet(质因数分解、因子个数)
题目链接: LightOJ 1341 Aladdin and the Flying Carpet 题意: 给出矩形的面积a,构造矩形的长和宽使得长宽都不小于b,矩形的面积恰好为a且长和宽不等。输出方案数。 分析: 根据:任何一个大于1的自然数n,若其不为素数则必可唯一的分解为有限个素数的乘积,即 n = p1^a1 * p2^a2 * p3^a3 * … * pk^ak,那么同时n的因子个原创 2016-05-29 11:40:18 · 442 阅读 · 0 评论 -
UVA 11428 GCD - Extreme (II)(G=∑ ∑GCD(i, j)(1<=i<N,i+1<=j<=N,欧拉函数)
题目链接: UVA 11428 GCD - Extreme (II) 题意: i<N j≤N给定n求:G = ∑ ∑ GCD(i, j) (n <= 4000000) i=1 j=i+1分析: 令sum[n]为题式中答案。考虑递推 sum[n] = sum [n - 1] + gcd(1, n) + gcd(2, n) + gcd(原创 2016-05-29 11:35:31 · 1610 阅读 · 0 评论 -
UVA 11752 The Super Powers(至少是两个正整数的幂的幂数)
题目链接: UVA 11752 The Super Powers 题意: 求出1~2^64 - 1范围内的所有幂数,并且每个幂数至少是两个正整数的幂。 分析: 要用unsigned long long。 对于任意正整数x它的指数k只要k不是素数,那么x^k必然可以表示成两个不同的正整数的幂。例如512 = 2^9 = (2^3)^3 = 8 ^3 需要知道底数和指数的范围,然后判断指数原创 2016-05-29 11:28:05 · 541 阅读 · 0 评论 -
LightOJ 1282 Leading and Trailing(取n^k的最高三位数字)
题目链接: LightOJ 1282 Leading and Trailing 题意: 给出n和k求出n^k的高三位和低三位。 分析: 低三位别忘了%03d输出啊! 高三位取log瞎搞啊!#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#incl原创 2016-05-27 02:16:01 · 441 阅读 · 0 评论 -
LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)
题目链接: LightOJ 1370 Bi-shoe and Phi-shoe 题意: 给出n个数,要求对每个数a[i]找一个数x[i]使得小于x[i]且与x[i]互素的数的个数不小于a[i],求出所有x[i]的最小和。 分析: 和最小则每个数对应的x[i]应最小。这道题和欧拉函数定义稍微有点区别,欧拉函数是小于等于a且与a互素的数个数,而这题只能小于。 体现在1上,一般的phi[1]原创 2016-05-27 02:14:34 · 418 阅读 · 0 评论 -
UVA 10200 Prime Time(素数判定)
题目链接: UVA 10200 Prime Time 题意: 根据公式n * n + n + 41 求出在区间a<= n <= b的n算出的结果是素数的概率。0<= a <= b <= 10000. 分析: 预处理一下,要不然会TLE。前缀和的路子。输出需要注意精度,要不然会WA,我也不知道这里怎么会有坑。。。。#include <iostream>#include <cstdio>#原创 2016-05-27 02:13:03 · 1229 阅读 · 0 评论 -
UVA 11827 Maximum GCD(gcd, getline)
题目链接: UVA 11827 Maximum GCD 题意: 给出T,代表测试样例,每行是一个样例,会有M个数,求出M个数两两gcd的最大值。M<100. 分析: 唯一麻烦的就是M是未知的,也就是不知道这一行究竟有多少个数.用getline + string读入,然后在转化成数字即可。#include <iostream>#include <cstdio>#include <cstr原创 2016-05-27 02:11:53 · 466 阅读 · 0 评论 -
SGU 106 The equation(扩展欧几里德)
题目链接: SGU 106 The equation 题意: 给出a,b,c,x1,x2,y1,y2求满足ax + by + c = 0且x1 <= x <= x2, y1 <= y <= y2的x,y有多少组。 分析: 扩展欧几里德的应用需要特别注意a=0,b=0,c=0的特判。#include <iostream>#include <cstdio>#include <cstring原创 2016-05-27 02:10:28 · 454 阅读 · 0 评论 -
51nod 1135 原根(求素数最小原根)
题目链接: 51nod 1135 原根 题意: 求素数p的最小原根。#include <stdio.h>#include <algorithm>#include <cmath>#include <iostream>#include <string.h>#include <cstring>using namespace std;const int MAX_N = 1000010;原创 2016-05-26 00:49:20 · 1382 阅读 · 0 评论 -
LightOJ 1336 Sigma Function(1--n中所有因子和为偶数的数字个数)
题目链接: LightOJ 1336 Sigma Function 题意: 找到1–n中所有因子和为偶数的数字个数。n <= 1e12. 分析: 通过打表发现平方数和平方数的二倍的因子和是奇数。那就只要找小于等于n的平方数和平方数的二倍的个数就好了。 打表的程序:const int MAX_N = 10010;int prime_cnt, total;int prime[MAX_N],原创 2016-05-29 11:47:16 · 558 阅读 · 0 评论 -
LightOJ 1245 Harmonic Number (II)(∑ (n / i)(n < 2^31))
题目链接: LightOJ 1245 Harmonic Number (II) 题意: i <= n计算 ∑ (n / i)(n < 2^31) i = 1分析: 我只能想到ans[n] - ans[n - 1] = n的因子个数,剩下的我就不会了,因为n太大了,没办法递推啊。。。。。 网上是这样说的。令m = sqrt(n)。那么对于m’ > m,n/m’一定小于等于m,所原创 2016-05-29 11:49:32 · 366 阅读 · 0 评论