【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)\)

现在要求出不超过\(N\)的\(x\),使得\(g(x)>g(i)\)

我们尝试找出\(x\)的特性,来缩小枚举的范围。

假定\(p_1,p_2,...,p_m\)一定,那么约数个数一定。

假设\(p_1,p_2,...,p_m\)可以组合成一个数\(x<N\),那么意味着它能组合的最小的数\(x<N\),所以\(a_1,a_2,...,a_m\)一定越小越好,即取前\(m\)个素数。

而\(N\leq 2*10^9\),所以只用预处理出前20个素数即可。

而且,当\(a_1<a_2<...<a_m\)一定时,考虑\(p\)要满足什么关系。

可以得到这样的结论:\(p_1>p_2>p_3>...>p_m\),否则可以通过交换得到更小的数而可以满足条件。

所以我们先预处理出前20个素数,然后从小到大枚举当前素因子取多少个。

取一个约数个数最大的即可。

【bzoj1053】反素数的更多相关文章

  1. BZOJ1053 反素数

    题目大意 对于任何正整数x,其约数的个数记作g(x).如果某个正整数x满足对任意的0<i<x,都有g(x)>g(i) ,则称x为反质数.现在给定一个数N,求出不超过N的最大的反质数. ...

  2. 【BZOJ1053】 反素数ant

    BZOJ1053 反素数ant 我们先考虑唯一分解定理求出约数个数: \(x=a_1^{p_1}a_2^{p_2}a_3^{p_3}...a_k^{p_k}\) 然后\(num=\Pi_{i=1}^k ...

  3. BZOJ1053 [HAOI2007]反素数ant 数论

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 传送门 - BZOJ1053 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正 ...

  4. 【BZOJ1053】[HAOI2007]反素数(搜索)

    [BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #inclu ...

  5. 【BZOJ1053】[HAOI2007]反素数

    [BZOJ1053][HAOI2007]反素数 题面 bzoj 洛谷 题解 可以从反素数的定义看出小于等于\(x\)的最大反素数一定是约数个数最多且最小的那个 可以枚举所有的质因数来求反素数,但还是跑 ...

  6. 【BZOJ1053】[HAOI2007]反素数ant 暴力

    [BZOJ1053][HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) ...

  7. bzoj1053: [HAOI2007]反素数ant

    51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...

  8. 约数 求反素数bzoj1053 bzoj1257

    //约数 /* 求n的正约数集合:试除法 复杂度:O(sqrt(n)) 原理:扫描[1,sqrt(N)],尝试d能否整除n,若能,则N/d也能 */ ],m=; ;i*i<=n;i++){ ){ ...

  9. BZOJ1053:反素数(数学)

    题目链接 对于任意的正整数\(x\),记其约数的个数为\(g(x)\).现在定义反素数:对于\(0<i<x\),都有\(g(x)>g(i)\),那么就称x为反素数. 现在给定一个数N ...

随机推荐

  1. GetLastInputInfo计时用户离开电脑及软件在指定时间锁定等(转)

    /************************************************************************/ /* 说明: 调用函数GetLastInputIn ...

  2. Java多个数字求和输出

    设计思想: 首先为了能够输入数字,先引入一个类import java.util.Scanner;因为是多个数字求和,所以为了方便声明一个数组double[] num;再声明一个变量int number ...

  3. c# SendMail

    using System; using System.Collections.Generic; using System.Net; using System.Net.Mail; using Syste ...

  4. Win 64 register usage

    http://www.mouseos.com/win64/registers.html Seems UEFI using rcx, rdx, r8, r9, r10, r11, r12 to stor ...

  5. Java_JDK_HashMap

    (二)HashMap 需要注意的无非几点: 是什么结构,如何存储的? 如何加入元素?既然是hashMap,那么是如何计算hashcode的呢?遇到冲突又是如何解决的呢? 如何删除元素? 当容量不够时是 ...

  6. How To PLAY_SOUND in Oracle Forms

    Play_sound is used to play audio files in Oracle Forms, Play_Sound plays the sound object in the spe ...

  7. Date Picker Calendar For Oracle Forms 6i

    Giving date picker calendar option to user for date type fields in Oracle Forms. I am providing you ...

  8. Action的搭建及application、request、Session的运用 多种方法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 加载xib文件

    // Test.xib --编译--> Test.nib // 方式1 NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"Te ...

  10. 委托、匿名方法、Lambda表达式的演进

    摘自:"http://www.cnblogs.com/eagle1986/archive/2012/01/19/2327358.html 假设给我们一个泛型对象List<T>,T ...