问题概述:把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数。

例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6。如果有多个数复杂度相等,输出最小的

输入样例:                                       对应输出:

5                                                      1 1

1                                                      6 4

10                                                    60 12

100                                                  840 32

1000                                                7560 64

10000

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1060

定理1:对于一个大数可以分解质因数n = p1^a1*p2^a2*……*px^ax,其中pi表示第i小的质数,ai为pi的指数,

那么n的因数个数就为(a1+1)*(a2+1)*……*(ax+1);

反素数:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4,如果某个正整数x满足:对于任意

i(0<i<x),都有g(i)<g(x),则称x为反素数

性质一:一个反素数的质因子必然是从2开始连续的质数

性质二:反素数n = p1^a1*p2^a2*……*px^ax,其中必然a1>=a2>=a3……

此题相当于求小于n的最大反素数,可以用搜索解决

#include<stdio.h>
#include<algorithm>
using namespace std;
#define LL long long
LL n, ans, temp;
int a[26] = {0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
void Sech(int x, int p, int sum, LL now);
int main(void)
{int T;scanf("%d", &T);while(T--){ans = 1;scanf("%lld", &n);Sech(1, 10, 1, 1);printf("%lld %lld\n", temp, ans);}return 0;
}void Sech(int x, int p, int sum, LL now)
{int i;if(x>14){if(sum>ans || sum==ans && now<temp)ans = sum, temp = now;return;}for(i=0;i<=p;i++){Sech(x+1, i, sum*(i+1), now);if(now*a[x]/a[x]!=now || now*a[x]>n)return;now *= a[x];}
}

bzoj 1053: [HAOI2007]反素数ant 51nod-1060:最复杂的数(反素数与因数个数计算)相关推荐

  1. BZOJ 1053 [HAOI2007]反素数ant

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

  2. BZOJ-1053-反素数ant

    描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0 < i < x,则称x为反质数.例如,整数1,2,4 ...

  3. 让用户输入一个正整数,判断该数是不是素数(质数)

    //9.让用户输入一个正整数,判断该数是不是素数(质数) import java.util.Scanner; public class P9 { public static void main(Str ...

  4. BZOJ(8) 1053: [HAOI2007]反素数ant

    1053: [HAOI2007]反素数ant Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4118  Solved: 2453 [Submit][ ...

  5. bzoj1053: [HAOI2007]反素数ant

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

  6. [HAOI2007]反素数ant

    1053: [HAOI2007]反素数ant Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1907  Solved: 1069 [Submit][ ...

  7. Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开

    6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...

  8. bzoj 1630 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁(有重复元素的组合数)

    2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 281  Solved: 18 ...

  9. ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串

    题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...

最新文章

  1. 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
  2. android 计算执行时间
  3. 分布式实时计算—Storm—基础介绍
  4. RabbitMQ学习及实践3--SpringMVC实现
  5. 使用nltk.pos出现IndexError: string index out of range
  6. 使用cglib创建代理对象
  7. Ucosii消息邮箱使用
  8. u-boot向linux内核传递启动参数
  9. 【Java】数据结构——队列(图文)
  10. 大数据-HDFS 配置与使用
  11. APP 控制 ROS 机器人 群组
  12. OpenCV配置及开发中遇到的问题
  13. zookeeper管理mysql_Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
  14. Mac端Java开发分析工具JProfiler 13.0.1
  15. wxpython使用_wxPython学习笔记(二)
  16. lammps不规则界面建模技巧
  17. Rime中州韵导入QQ五笔词库
  18. 爱国者(aigo)U391 128G 固态U盘制作PE启动盘
  19. 最实用的chrome插件,助高效开发,加快步伐!
  20. 孢子java_孢子框架-接口访问层、ESB、微服务API GateWay对比

热门文章

  1. python主要用来做什么-python语言都可以做什么
  2. 科学网—中文普通话语音识别DEMO,LilyMandarinSpeechRecognition V1.0 - 石自强的博文...
  3. 从输入url到页面加载完成发生了什么
  4. java斗地主随机发牌_使用Java实现斗地主游戏的发牌过程
  5. 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)...
  6. 根据一张表更新另一张表
  7. jsp 页面之${fn:}内置函数列表
  8. Tomcat服务器报错IOException: Broken pipe
  9. easyUI 设置datagrid的行高 + 文字超宽换行
  10. 【编译器】Mac下gcc环境配置折腾