首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
洛谷 P1463、POI2002、HAOI2007 反素数
】的更多相关文章
【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak(其中p为第k大的质数)是Antiprime数 则必有a1≥a2≥a3≥...≥ak≥0 因此如果有两个值约数个数相同 则要取值比较小的那个 剪枝: 有了这个定理我们就可以搜索质数的指数 由于231已经远远超过数据规模 因此我们只需要搜到31层 质因子的个数最多只有10个(所有质因子相乘得到他们可以…
洛谷 P1463 [POI2002][HAOI2007]反素数
题目链接 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6等都是反质数. 现在给定一个数N,你能求出不超过N的最大的反质数么? 题目分析 根据反质数的概念和算术基本定理,我们可以知道,若x为反质数,则x=∏piai(pi为质数,pi>pi-1,ai<=ai-1)(对于最后一项限制的说明:若存在ai>ai-1,则交换ai与ai-1所得的数与…
Luogu P1463 [POI2002][HAOI2007]反素数【数论/dfs】By cellur925
题目传送门 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6等都是反质数. 现在给定一个数N,你能求出不超过N的最大的反质数么?(N<=2000000000) $Sol$ 首先我们需要知道一个数约数的个数.这个是算术基本定理的推论,这里就不再赘述了,这儿稍微提了一句. 之后因为N在2e9内,所以它至多有10个质因子. 再次,我们要满足质因子从小到大的…
[POI2002][HAOI2007]反素数
题意 反素数 想法 证明这样一个结论 对于一个可行的反素数\(p\) \(p = \sum_{i}^{k} p_{k} ^ {c_k}\) 当 \(p_i > p_j 有 c_i < c_j\) 反证法 若\(p_i > p_j 有 c_i > c_j\)则交换\(c_i 与 c_j\)得到一个新数\(s\) 此时知\(s < p\ and \ g(p) = g(s)\) 不符 代码 就12个素数位,完全可以爆搜 代码就不放了…
数学结论【p1463】[POI2002][HAOI2007]反素数
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6等都是反质数. 现在给定一个数N,你能求出不超过N的最大的反质数么? Input 一个数N(1<=N<=2,000,000,000). Output 不超过N的最大的反质数. woc,神仙题. 一.暴力\(O(n^{\frac{5}{2}})\) \(40pts\) 直接写暴力的话,…
[POI2002][HAOI2007]反素数 数论 搜索 好题
题目描述: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6等都是反质数. 现在给定一个数N,你能求出不超过N的最大的反质数么? 题解: 显然,我们要求的是 $[1,N]$ 中约数个数最多且该数字最小的值. 根据约数个数公式:$ans=(p_{1}+1)(p_{2}+1)(p_{3}+1)...$,其中 $p_{i}$ 为第 $i$ 个素因子的幂次. 所以我们只需枚…
[POI2002][HAOI2007]反素数(Antiprime)
题目链接 这道题需要用到整数唯一分解定理以及约数个数的计算公式.这里我就不再阐述了. 公式可以看出,只有指数影响约数个数,那么在唯一分解出的乘式中,指数放置的任何位置都是等价的.(即 23*34*57与27*34*53的约数个数相同)但很明显指数放置位置的不同会影响乘积的大小.由于所有比n小的数的约数个数都比他的约数个数小,换而言之就是约数个数不相等.即 相同约数个数,该数越小越好.那么我们运用贪心思想.尽量大的指数放置于尽量小的底数上. 题目的数据范围小于231,所以指数最大31,由之前的推论…
【BZOJ1053】[HAOI2007]反素数
[BZOJ1053][HAOI2007]反素数 题面 bzoj 洛谷 题解 可以从反素数的定义看出小于等于\(x\)的最大反素数一定是约数个数最多且最小的那个 可以枚举所有的质因数来求反素数,但还是跑不过 我们又想,质因数不可能太大 而\(37\)内素数相乘已经大于\(2*10^9\)了 所以枚举到\(37\)就可以了 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cst…
【BZOJ1053】[HAOI2007]反素数 (搜索+数论)
\([POI2002][HAOI2007]\)反素数 题目描述 对于任何正整数x,其约数的个数记作\(g(x)\).例如\(g(1)=1.g(6)=4\). 如果某个正整数x满足:\(g(x)>g(i) 0<i<x\),则称x为反质数.例如,整数\(1,2,4,6\)等都是反质数. 现在给定一个数\(N\),你能求出不超过\(N\)的最大的反质数么? 输入输出格式 输入格式: 一个数\(N(1<=N<=2,000,000,000)\). 输出格式: 不超过\(N\)的最大的反…
【BZOJ1053】[HAOI2007]反素数(搜索)
[BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #include<cstdio> using namespace std; int pri[15]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43}; int ans,d,n; void dfs(int x,int s,int D) { if(x==15){if(d<D…