Description

一天,小B学习了分解质因数的相关内容。他发现,一个数的质因子可以有许多不同的排列方式,例如20=2*2*5=2*5*2=5*2*2,那么小B认为20的质因子有3种不同的排列方式。小B的同学现在有一个问题:如果一个整数的质因子的不同的排列方式的种类数为k,那么这个整数n(n>1)最小是多少?小B的同学一共有T个不同的k值,希望小B帮助这个同学解决问题。但是小B发现T太大了,并且给出的k值也相当大,因此小B向你求助。

Input

第一行,一个整数T。

接下来的T行,每行一个整数k。

Output

T行,每行一个整数,其中第i行的整数表示第i个k值对应的n的值。

Sample Input

4

1

2

3

105

Sample Output

2

6

12

720

Data Constraint

对于30%的数据,1< n<=100000;

对于全部的数据,1< n<2^63,1< k<2^63,1<=T<=1000。

Solution

  • 考虑

    x=p1a1×p2a2×…×pnan

    x=p1^{a1}×p2^{a2}×…×pn^{an}

  • 它的质因子排列方式一共有:

    (a1+a2+…+an)!a1!∗a2!∗...∗an!

    \frac{(a1+a2+…+an)!}{a1!*a2!*...*an!}

  • 因此可以得出最终回答的数的形式一定是这样的:

    2a1×3a2×5a3×7a4×…

    2^{a1}×3^{a2}×5^{a3}×7^{a4}×…

  • 其中 a1≥a2≥a3≥a4…a1\geq a2\geq a3\geq a4…

  • 我们可以搜索出所有符合这样要求的数和对应的排列方案数,

  • 然后建一个map(C++)或者有序表,然后查询。(范围内符合条件的数一共19274个)。

  • 为避免各种问题,我开的是 long doublelong\ double 和 unsigned long longunsigned\ long\ long 。

  • 提示:质数最多为15个(从 2 到 47 为止)。

Code

#include<cstdio>
#include<algorithm>
#include<cctype>
using namespace std;
typedef unsigned long long ULL;
typedef long double LDB;
const int N=1e5+1;
const ULL inf=(1ULL<<63)-1;
struct data
{ULL x,y;
}f[N];
ULL f1[N],f2[N];
int tot,tot1,h[16];
bool bz[50];
template<typename T>inline T read()
{T X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X;
}
void dfs(int x,int y,int z,LDB s1,LDB s2)
{if(x>15) return;for(int i=1;i<=z;i++){s1*=(LDB)h[x];if(s1>inf) return;s2=s2*(LDB)(y+i)/i;if(s2>inf) return;f[++tot].x=s2;f[tot].y=s1;dfs(x+1,y+i,i,s1,s2);}
}
inline bool cmp(data x,data y)
{return x.x<y.x || x.x==y.x && x.y<y.y;
}
int main()
{for(int i=2;i<=47;i++){if(!bz[i]) h[++h[0]]=i;for(int j=1;j<=h[0] && i*h[j]<=47;j++){bz[i*h[j]]=true;if(i%h[j]==0) break;}}dfs(1,0,63,1,1);sort(f+1,f+1+tot,cmp);for(int i=1;i<=tot;i++)if(f[i].x!=f[i-1].x) f2[++tot1]=f[i].x,f1[tot1]=f[i].y;int T=read<int>();while(T--){ULL k=read<ULL>();int x=lower_bound(f2+1,f2+1+tot1,k)-f2;printf("%llu\n",f1[x]);}return 0;
}

JZOJ 3775. 【NOIP2014模拟8.15】因子的排列相关推荐

  1. jzoj 5906. 【NOIP2018模拟10.15】传送门(树形dp)

    5906. [NOIP2018模拟10.15]传送门 Description 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传送枪据为己有,于是把Normal ...

  2. [双指针|模拟] leetcode 15 三数之和

    [双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...

  3. jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  4. 2020.03.11模拟赛15(第一题)

    1.水果盛宴(fruit) 题目描述 贝茜又再一次地闯入了 Farmer John 的房子!她在厨房发现了一堆柠檬和一堆橘子(每堆都有无限多个),并且,她希望尽可能地多吃. 贝茜的有一个饱腹值上限 T ...

  5. jzoj5904. 【NOIP2018模拟10.15】刺客信条(并查集)

    5904. [NOIP2018模拟10.15]刺客信条 Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一 ...

  6. JZOJ 5977. 【清华2019冬令营模拟12.15】堆

    Description Input Output Sample Input 10 10 0 1 1 2 2 4 3 12 2 6 2 15 3 5 3 10 7 7 9 16 2 3 1 10 9 2 ...

  7. JZOJ 3809. 【NOIP2014模拟8.25】设备塔

    Description 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是 传输信息所用的数据通 ...

  8. 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(

    我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...

  9. 【JZOJ 3823】【NOIP2014模拟9.9】遇见

    Description Zyh独自一人在街上漫步.Zyh相信不久后应该就可以和她一起漫步,可是去哪里寻找那个她呢?Zyh相信每个人都有一个爱情的号码牌,这个号码牌是一个n*n的矩阵. 每个人都要在矩阵 ...

最新文章

  1. 项目中用到的Linux命令
  2. r语言导出html改不了名,请问如何进行数据框列的重命名?
  3. 状态机思路在程序设计中的应用
  4. Lumen中启用session
  5. 数据挖掘—朴素贝叶斯分类算法(Java实现)
  6. fatal error C1083: 无法打开包括文件:dxtrans.h: No such file or directory
  7. centos7安装cassandra
  8. TFS集群间数据迁移任务总结
  9. SUM OF SUB RECTANGLE AREAS(打表+oeis+c++大数类板子)
  10. coverity持续集成_美国新思科技发布2017年Coverity Scan报告
  11. android 设置壁纸上下显示不全,默认锁屏壁纸及锁屏壁纸被拉伸显示不全的问题...
  12. python跳转下一页_用Beautifulsoup转到下一页
  13. 上古卷轴5:重制版Skyrim Together用MO无法替换游戏菜单Menu图像LOGO的问题解决
  14. Excel中取值函数三剑客:LEFT、RIGHT、MID
  15. 电源芯片选择DC/DC还是LDO?
  16. 按照角度进行图片旋转
  17. css3的高级特效 2D
  18. java主程序怎样调用子程序_主程序调用子程序使用( )指令。
  19. python ‘//’ 取整,‘%’ 取余
  20. android性能测试自动化,Android App自动化性能测试探究

热门文章

  1. 写了一个操作XML文件的类
  2. 卷积神经网络算法的一个实现
  3. 安卓服务Service详解
  4. LINUX下的文件结构介绍
  5. 你一定要知道的关于Linux文件目录操作的12个常用命令
  6. 云炬随笔20210819
  7. Python-TKinter布局之pack
  8. 静态链接中的那点事儿(2):C++二进制兼容性及跨平台初步
  9. TWebBrowser禁止弹出Alert对话框
  10. 认清JavaScript和JAVA全局变量和局部变量的作用域