假设一个数有n个质因子a1,a2,..,an,那么n'=Σ(a1*a2*...*an)/ai。

打个表出来,发现一个数x,如果x'=Kx,那么x一定由K个“基础因子”组成。

这些基础因子是2^2,3^3,5^5,7^7,11^11,13^13。只有6个,K不超过30,于是可以dfs。

要注意搜索顺序(每次枚举的时候,都从大于等于前项的开始搜)和可行性剪枝(如果超过r则剪枝,虽说有可能爆long long,但其实整除就可以判,而且没有精度误差)。

#include<cstdio>
//#include<set>
#include<algorithm>
#include<cmath>
using namespace std;
//const long double EPS=0.0000000001;
typedef long long ll;
//set<ll>S;
ll base[11],path[1000010];
int pr[11];
int K,e;
ll r;
void dfs(int cur,int pre,ll now){
if(cur==K){
// if(S.find(now)==S.end()){
path[++e]=now;
// S.insert(now);
// }
return;
}
for(int i=pre;i<=6;++i){
if(base[i]>r/now){
break;
}
dfs(cur+1,i,now*base[i]);
}
}
int main(){
// freopen("a.in","r",stdin);
// freopen("a1.out","w",stdout);
pr[1]=2; pr[2]=3; pr[3]=5; pr[4]=7; pr[5]=11; pr[6]=13;
for(int i=1;i<=6;++i){
base[i]=1;
for(int j=1;j<=pr[i];++j){
base[i]*=(ll)pr[i];
}
}
while(scanf("%d%lld",&K,&r)!=EOF){
e=0;
// S.clear();
dfs(0,1,1ll);
printf("%d\n",e);
sort(path+1,path+e+1);
if(e){
for(int i=1;i<e;++i){
printf("%lld ",path[i]);
}
printf("%lld\n",path[e]);
}
}
return 0;
}

最新文章

  1. 安卓ApiDemos最简单的使用方法
  2. 安装rabbitmq以及python调用rabbitmq--暂欠
  3. 【leetcode】Binary Tree Postorder Traversal (hard) ☆
  4. [codeforces 293]A. Weird Game
  5. BZOJ 1555 KD之死
  6. Ubuntu12.04 下配置tomcat
  7. |,&amp;,&lt;&lt;,&gt;&gt;运算符
  8. java学习之总结
  9. Struts2 + uploadify 多文件上传完整的例子!
  10. B/S 架构中,网络模型的分解与协议解析
  11. MVC中ztree异步加载
  12. php面向对象三大特征
  13. mysql 零碎笔记
  14. php 品牌全车零件订购平台( 带采集数据 及 账号自动登陆【已绕过https证书加密】,php源码 ,QQ: 876635409 )
  15. 05.Python网络爬虫之三种数据解析方式
  16. JVM-自动内存管理机制
  17. python自动化开发-9 进程 线程
  18. CentOS下如何查看并杀死僵尸进程
  19. nginx按日期分割日志
  20. 20135119_涂文斌 实验三 敏捷开发与XP实践

热门文章

  1. Brave Game HDU1846(巴什博弈)
  2. webpack自动生成项目的html
  3. B题 hdu 1407 测试你是否和LTC水平一样高
  4. 为什么Windows7打开项目的方式是灰的不能修改
  5. GNU Readline 库及编程简介【转】
  6. Linux内核的架构
  7. 3D Studio Max [www]
  8. 给自己立一个flag
  9. springmvc中输出字符串
  10. NOIP 2012 Day2