首先枚举$n$的每个约数$d$,检查一下$d+1$是否是质数,这些数都有可能作为答案的质因子出现。

考虑爆搜,每次枚举下一个要在答案中出现的质因子$p$,将$n$除以$p-1$,再枚举$p$的指数,然后递归搜索。

需要加一些剪枝:

$1.$当$n=1$的时候说明找到了一组合法解,直接返回。

$2.$只有当$p-1|n$时才有可能有解,因此设$g[i][j]$表示第$i$个约数在第$j$个质数之后第一个能被整除的位置。

那么可以沿着$g$进行枚举,每次枚举到的必然是$n$的约数。

$3.$对于如何判断一个$d$是$n$的第几个约数,可以用两个数组进行重标号:

$small[d]$表示$d(d\leq\sqrt{n})$是$n$的第几个约数。

$big[d]$表示$\frac{n}{d}(\frac{n}{d}>\sqrt{n})$是$n$的第几个约数。

#include<cstdio>
#include<algorithm>
typedef long long ll;
const int N=1000000,M=5000;
int T,lim,m,d,cnt,i,j,p[N/10],tot,small[N],big[N],g[M][700];bool v[N];ll n,a[M],b[M],q[N];
inline bool check(ll n){
if(n<N)return !v[n];
for(int i=2;1LL*i*i<=n;i++)if(n%i==0)return 0;
return 1;
}
void dfs(int x,ll S,ll p){
if(p==1){q[cnt++]=S;return;}
x=g[p<=lim?small[p]:big[n/p]][x];
if(x==m)return;
dfs(x+1,S,p);
for(dfs(x+1,S*=a[x],p/=a[x]-1);p%a[x]==0;dfs(x+1,S*=a[x],p/=a[x]));
}
int main(){
for(i=2;i<N;i++){
if(!v[i])p[tot++]=i;
for(j=0;j<tot&&i*p[j]<N;j++){
v[i*p[j]]=1;
if(i%p[j]==0)break;
}
}
scanf("%d",&T);
while(T--){
scanf("%lld",&n);
if(n==1){puts("2\n1 2");continue;}
for(lim=1;1LL*(lim+1)*(lim+1)<=n;lim++);
for(cnt=m=d=0,i=1;i<=lim;i++)if(n%i==0){
if(check(i+1))a[m++]=i+1;
b[d++]=i;
if(1LL*i*i!=n){
if(check(n/i+1))a[m++]=n/i+1;
b[d++]=n/i;
}
}
std::sort(a,a+m),std::sort(b,b+d);
for(i=0;i<d;i++){
if(b[i]<=lim)small[b[i]]=i;else big[n/b[i]]=i;
for(g[i][m]=m,j=m-1;~j;j--)g[i][j]=b[i]%(a[j]-1)?g[i][j+1]:j;
}
dfs(0,1,n);
std::sort(q,q+cnt);
printf("%d\n",cnt);
if(cnt)for(printf("%lld",q[0]),i=1;i<cnt;i++)printf(" %lld",q[i]);
puts("");
}
return 0;
}

BZOJ3737 : [Pa2013]Euler的更多相关文章

  1. 【BZOJ】3737: [Pa2013]Euler

    题意: 求满足\(phi(a)=n\)的\(a\)的个数.(\(n \le 10^{10}\)) 分析 这种题一开始就感觉是搜索= = 题解 首先容易得到 \[\phi(n) = \prod_{i} ...

  2. [BZOJ]3737 [Pa2013]Euler

    从这个FB开始写博客啦. 也不知道会坚持多久…… = =似乎要加一句转载请注明出处 http://www.cnblogs.com/DancingOnTheTree/p/4026076.html htt ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. [project euler] program 4

    上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...

  5. The Euler function[HDU2824]

    The Euler functionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...

  6. Euler Tour Tree与dynamic connectivity

    Euler Tour Tree最大的优点就是可以方便的维护子树信息,这点LCT是做不到的.为什么要维护子树信息呢..?我们可以用来做fully dynamic connectivity(online) ...

  7. nyoj998(euler)

    题意:题意:给出n和m,求满足条件gcd(x, n)>=m的x的gcd(x, n)的和,其中1<=x<=n,1<= n, m <= 1e9:思路:此题和nyoj1007差 ...

  8. nyoj1007(euler 函数)

    euler(x)公式能计算小于等于x的并且和x互质的数的个数: 我们再看一下如何求小于等于n的和n互质的数的和, 我们用sum(n)表示: 若gcd(x, a)=1,则有gcd(x, x-a)=1: ...

  9. [家里蹲大学数学杂志]第237期Euler公式的美

    1 Euler 公式 $e^{i\pi}+1=0$ (1) 它把 a.  $e:$ 自然对数的底 $\approx 2. 718281828459$ (数分) b.  $i$: 虚数单位 $=\sqr ...

随机推荐

  1. 天财商龙SQL查询ID登陆POS情况

    SELECT * FROM [tcgem_client0001].[dbo].[TCB_POS] ' --查询ID登陆POS情况

  2. DevOps 在公司项目中的实践落地

    原文出处:https://www.cnblogs.com/beef/p/7743594.html ref: [DevOps]团队敏捷开发系列--开山篇 https://www.cnblogs.com/ ...

  3. 远程桌面管理工具Remote Desktop Connection Manager

    使用说明:RDCMan安装好后双击打开RDCMan.exe,首次使用需要添加配置文件扩展名为rdg 1.点击File新建配置文件,这里命名为MRU,存放在安装的根路径下 建好之后,MRU会显示在左侧菜 ...

  4. Introduction to boundary integral equations in BEM

    Boundary element method (BEM) is an effective tool compared to finite element method (FEM) for resol ...

  5. 请推荐几个asp.net下做网站的好的开源框架

    1.We7 CMS We7 CMS是由西部动力开发的一款充分发掘互联网Web2.0(如博客.RSS等)的信息组织优势,将其理念利用到政府企事业网站的构建.组织.管理中的网站建设和管理方面的产品. 系统 ...

  6. ghithub中PHPOffice/PHPWord的学习

    1.概念:PHPWord是用纯PHP提供了一组类写入和从不同的文档格式的文件阅读库.PHPWord的当前版本支持微软的Office Open XML(OOXML或处理OpenXML),用于Office ...

  7. UOJ#53. 【UR #4】追击圣诞老人 树链剖分 k短路

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ53.html 题意 给定一棵有 n 个节点的树. 每一个点有一个权值. 对于每一个 $i$ 给定三个参数 ...

  8. Codechef EDGEST 树套树 树状数组 线段树 LCA 卡常

    原文链接http://www.cnblogs.com/zhouzhendong/p/9016579.html 题目传送门 - Codechef EDGEST 题意 给定相同点集上的两棵生成树$T_1$ ...

  9. 058 kafka与log4j集成

    1.首先在resources下面写log4j.properties 主要是因为kafka.producer.KafkaLog4jAppender类的存在. log4j.rootLogger=INFO, ...

  10. .net面试问答

    转载自:https://www.cnblogs.com/dingfangbo/p/5768991.html .net面试问答(大汇总)   原文://http://blog.csdn.net/weny ...