题干:

Given the number n, find the smallest positive integer which has exactly n divisors. It is guaranteed that for the given n the answer will not exceed 1018.

Input

The first line of the input contains integer n (1 ≤ n ≤ 1000).

Output

Output the smallest positive integer with exactly n divisors.

Examples

Input

4

Output

6

Input

6

Output

12

题目大意:

给定一个正整数n,求一个最小的正整数,使得它的因子个数恰为n。保证答案不超过1018

解题报告:

这题用到了一个概念叫反素数、、学习了一波。,但是其实就算没有这个概念,做法也很显然吧,,做个唯一分解这题就做完了。知识点在下面附上了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
ll biao[55] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
ll minn = 1e18+5;
ll n;
void dfs(ll dep,ll tmp,ll cur) {if(cur > n) return ;if(cur==n) minn = min(tmp,minn);for(ll i = 1; i<=63; i++) {if(minn < tmp * biao[dep]) break;tmp = tmp * biao[dep];dfs(dep+1,tmp,cur*(i+1));}
}
int main()
{int t;cin>>n;dfs(0,1,1);printf("%lld\n",minn);return 0 ;}

知识点:反素数:来源链接

今天要我要讲的是反素数,在ACM中也算是常见的考点,那么对于搞ACM的同学来说,很有必要搞清楚它,所以接下

来我会很详细地讲解。

在讲解反素数之前,我们先来看反素数的概念。

反素数的定义:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整

,都有,那么称为反素数。

从反素数的定义中可以看出两个性质:

(1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小

(2)同样的道理,如果,那么必有

在ACM竞赛中,最常见的问题如下:

(1)给定一个数,求一个最小的正整数,使得的约数个数为

(2)求出中约数个数最多的这个数

从上面的性质中可以看出,我们要求最小的,它的约数个数为,那么可以利用搜索来解。

以前我们求一个数的所有因子也是用搜索,比如,以每一个为树的一层建立搜索树,深度为

为例进行说明,建树如下:

可以看出从根节点到每一个叶子结点这条路径上的所有数字乘起来都是12的约数,所以12有6个约数。

【CodeForces - 27E】Number With The Given Amount Of Divisors (数论,数学,反素数)相关推荐

  1. Number With The Given Amount Of Divisors(反素数)

    Given the number n, find the smallest positive integer which has exactly n divisors. It is guarantee ...

  2. 【数学】【CF27E】 Number With The Given Amount Of Divisors

    传送门 Description 给定一个正整数\(n\),输出最小的整数,满足这个整数有n个因子 Input 一行一个整数\(n\) Output 一行一个整数,代表答案. Hint \(1~\leq ...

  3. Codeforces - 466C - Number of Ways - 组合数学

    https://codeforces.com/problemset/problem/466/C 要把数据分为均等的非空的三组,那么每次确定第二个分割点的时候把(除此之外的)第一个分割点的数目加上就可以 ...

  4. 【CodeForces - 768C】Jon Snow and his Favourite Number(思维,技巧,套路,数学异或,循环节,trick)

    题干: Jon Snow now has to fight with White Walkers. He has n rangers, each of which has his own streng ...

  5. Codeforces 1189B Number Circle

    题目链接:http://codeforces.com/problemset/problem/1189/B AC代码: #include<bits/stdc++.h> using names ...

  6. CodeForces - 466C Number of Ways(推公式/dp)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列,现在要求出满足条件的 ( i , j ) 的匹配数量,满足: 题目分析:训练时推的公式,简单说一下吧,维护前缀和 sum,则确定两个断点 ( ...

  7. CodeForces - 1454E Number of Simple Paths(基环树+思维)

    题目链接:点击查看 题目大意:给出一棵 n 个点的基环树,现在需要求所有长度大于等于 1 的路径个数 题目分析:对于所有的路径 ( x , y ) 可以分成下列两种情况来考虑: 路径不会经过环上的边: ...

  8. CodeForces - 1426F Number of Subsequences(dp)

    题目链接:点击查看 题目大意:给出一个长度为 n 的字符串,由 ' a ' , ' b ' , ' c ' 和 ' ? ' 组成,每一个 ' ? ' 都可以变成三个字母之一,这样的话假设有 k 个 ' ...

  9. CodeForces - 1189B Number Circle

    原题传送器<----点我 **题意:**n个数字,请你给它们排个序围成一个环,满足任意一个数两边的数之和大于它本身,例如题目给的图(左图为正确答案),如果不存在这样的环就输出NO. 难度★ 题解 ...

最新文章

  1. php带帽接口_利用php自包含特性上传webshell
  2. c++输入输出流加速器
  3. 9.IDA-重新设置函数类型、创建数组结构
  4. vim的tab键设定
  5. Intel开发文档导读
  6. 十亿级同步,百亿级调用,千亿级访问量的开放技术平台如何炼成?
  7. 创建一个vue-cli项目
  8. 数学分析学习笔记(陈纪修)
  9. Android柠檬水面试题,柠檬水的饮料摊(面试案例)
  10. 计算机网络的权威杂志,科学网—晒个自己整理的计算机网络和通信方向可能相关的期刊列表...
  11. 编译器对源代码的编译过程
  12. 《数据库系统概论》3.3.1模式的定义与删除实操
  13. 2008年七月七日,按照要求我提前进入中心,今天就是我博士的第一天
  14. python 函数名大小写
  15. arm64 中的__virt_to_phys
  16. 21种低成本的方式,帮助企业获得关注
  17. flutter 内网安装包生成二维码
  18. 语义分割论文-DeepLab系列
  19. 揭秘诈骗团伙通过裸聊软件实施敲诈勒索
  20. 手撕promise.all以及promise.race

热门文章

  1. wordpress安装_WordPress第三课:使用SOFTACULOUS安装WORDPRESS
  2. D - F e n d 簡 單 教 學 DOSBOX Easy Shell 【玩DOS游戏的必备软件】
  3. 1282B1. K for the Price of One (Easy Version)
  4. c语言pwm调制方式,pwm调制原理同步调制_几种pwm调制方式介绍 - 全文
  5. js urlencode 20 php,js实现php函数urlencode
  6. html简单父子页面,js 的 iframe 父子页面通信的简单方法
  7. MySQL求类型为GX的平均积分_mysql基本操作
  8. python 读取excel太慢_Python 读取excel并转换为字典
  9. VxWorks基本OS介绍
  10. python生成多个列表_python生成多个只含0,1元素的随机数组或列表(代码)