bzoj 1053: [HAOI2007]反素数ant 51nod-1060:最复杂的数(反素数与因数个数计算)
问题概述:把一个数的约数个数定义为该数的复杂程度,给出一个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:最复杂的数(反素数与因数个数计算)相关推荐
- BZOJ 1053 [HAOI2007]反素数ant
53: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0< ...
- BZOJ-1053-反素数ant
描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0 < i < x,则称x为反质数.例如,整数1,2,4 ...
- 让用户输入一个正整数,判断该数是不是素数(质数)
//9.让用户输入一个正整数,判断该数是不是素数(质数) import java.util.Scanner; public class P9 { public static void main(Str ...
- BZOJ(8) 1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4118 Solved: 2453 [Submit][ ...
- bzoj1053: [HAOI2007]反素数ant
51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...
- [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1907 Solved: 1069 [Submit][ ...
- Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...
- bzoj 1630 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁(有重复元素的组合数)
2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 281 Solved: 18 ...
- ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串
题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...
最新文章
- 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
- android 计算执行时间
- 分布式实时计算—Storm—基础介绍
- RabbitMQ学习及实践3--SpringMVC实现
- 使用nltk.pos出现IndexError: string index out of range
- 使用cglib创建代理对象
- Ucosii消息邮箱使用
- u-boot向linux内核传递启动参数
- 【Java】数据结构——队列(图文)
- 大数据-HDFS 配置与使用
- APP 控制 ROS 机器人 群组
- OpenCV配置及开发中遇到的问题
- zookeeper管理mysql_Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
- Mac端Java开发分析工具JProfiler 13.0.1
- wxpython使用_wxPython学习笔记(二)
- lammps不规则界面建模技巧
- Rime中州韵导入QQ五笔词库
- 爱国者(aigo)U391 128G 固态U盘制作PE启动盘
- 最实用的chrome插件,助高效开发,加快步伐!
- 孢子java_孢子框架-接口访问层、ESB、微服务API GateWay对比
热门文章
- python主要用来做什么-python语言都可以做什么
- 科学网—中文普通话语音识别DEMO,LilyMandarinSpeechRecognition V1.0 - 石自强的博文...
- 从输入url到页面加载完成发生了什么
- java斗地主随机发牌_使用Java实现斗地主游戏的发牌过程
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)...
- 根据一张表更新另一张表
- jsp 页面之${fn:}内置函数列表
- Tomcat服务器报错IOException: Broken pipe
- easyUI 设置datagrid的行高 + 文字超宽换行
- 【编译器】Mac下gcc环境配置折腾