BZOJ1053:反素数(数学)】的更多相关文章

题目大意 对于任何正整数x,其约数的个数记作g(x).如果某个正整数x满足对任意的0<i<x,都有g(x)>g(i) ,则称x为反质数.现在给定一个数N,求出不超过N的最大的反质数.(N<=2*1e9) 总体思路 性质1 不超过N的最大的反质数x为不超过N的约数个数最多的数字中最小的数字(最小的数字保证了不存在一个比x小的数y使得g(x)==g(y)). 直接爆搜寻找x会超时,我们要想办法缩小数据范围. 定理(性质2的基础) 任何一个合数都会分解为若干个质数的整数幂的乘积所表示.…
BZOJ1053 反素数ant 我们先考虑唯一分解定理求出约数个数: \(x=a_1^{p_1}a_2^{p_2}a_3^{p_3}...a_k^{p_k}\) 然后\(num=\Pi_{i=1}^k{p_i+1}\) 2,000,000,000中不同的素数因子大概是11个. 直接爆搜答案就好了. #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include…
题目链接 对于任意的正整数\(x\),记其约数的个数为\(g(x)\).现在定义反素数:对于\(0<i<x\),都有\(g(x)>g(i)\),那么就称x为反素数. 现在给定一个数N,满足\(1\leq N\leq 2*10^9\),求出不超过\(N\)的最大的反素数.   由反素数的定义我们知道,若\(x\)为反素数,那么\(x\)肯定是具有相同约数个数的数中最小的那一个:并且x的约数个数应该是最多的. 很明显直接枚举肯定要炸.观察到\(N\)不会超过\(2*10^9\),那么就可以知…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1053 假设这个最大的反素数为$x$,那么$1<p<x$中数的因子数都没有$x$多,而$x<p<n$中若出现比$x$因子数多的$p$,则可以找到一个新的更大的反素数.所以$x$就是$1<p<=n$中因子数最多的数. 考虑用质数来构造$x$,于是我们发现$2*3*5*7*11*13*17*23*27*29$大于了$2*10^{9}$,显然在不选择$29$的情况下,选…
[bzoj1053]反素数 题意 对于任何正整数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<=2,000,000,000\) 分析 设\(N={a_1}^{p_1}{a_2}^{p_2}...{a_m}^{p_m}\) 所以\(g(N)=\prod_{i=1}^m(p_i+1)\) 现…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 传送门 - BZOJ1053 题目描述 对于任何正整数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<=2,000,000,000) 题解 对于任何一个数 $p$ ,令 $p=\prod_\limits{i\in \{…
[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…
[BZOJ1053][HAOI2007]反素数 题面 bzoj 洛谷 题解 可以从反素数的定义看出小于等于\(x\)的最大反素数一定是约数个数最多且最小的那个 可以枚举所有的质因数来求反素数,但还是跑不过 我们又想,质因数不可能太大 而\(37\)内素数相乘已经大于\(2*10^9\)了 所以枚举到\(37\)就可以了 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cst…
[BZOJ1053][HAOI2007]反素数ant 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的最大的反质数. Sample Input 1000 Sample Outp…
51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define clr(x,c) me…