华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1466|回复: 3
打印 上一主题 下一主题

1-m中那个数的约数最多

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
楼主
发表于 2018-5-1 14:38:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、最简单和直观的方法是对于每个数字,统计他的约数的个数,记录约数最多的数,这样复杂度大约在n2级别,优化下,也大约在nlnn。(想想怎么优化)
2、直接生成法,任何数都可以表示成一个唯一分解式子 N=2^x1*3^x2*5^x3******K^Xk。其中2,3,5,**K都是质数,而且k不会太大,然后x1---xk的范围也很好确定,搜索不断调整就是。
回复

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
沙发
 楼主| 发表于 2018-5-1 14:38:43 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int l,r,s,i,j,maxy,maxi;
  4. int main()
  5. {
  6.     cin>>l>>r;
  7.     maxx=maxy=0;
  8.     for (i=l; i<=r; i++)
  9.     {
  10.         s=0;
  11.         for (j=1; j<=i; j++)
  12.             if (i%j==0) s=s+1;
  13.         if (s>maxy){maxy=s;maxi=i;}  //约数多少个,这个数字是几都要记录下来
  14.     }
  15.     cout<<maxy<<' '<<maxi;
  16.     return 0;
  17. }
复制代码
回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
板凳
 楼主| 发表于 2018-5-1 14:39:18 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int n;
  4. int p[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}; //前7个质数的乘积已经大于10^5说明不可能有超过7个质因子
  5. long long   maxs=1; //约数最多的那个数
  6. int maxk=0;//最多的约数个数
  7. void mysearch(int i,long  long s,long long  j,long long  k)
  8. //i表示深度(搜索到了第几个质因子)
  9. //s表示当前因子最多的那个数字
  10. //j表示最多含有多少个第i层的因子
  11. //k表示当前最多因子的个数
  12. {
  13.     int jj;
  14.     if(i>=9) return;
  15.     if (k>maxk){maxs=s;maxk=k; cout<<maxs<<' '<<maxk<<endl;}
  16.     for (jj=1;jj<=j;jj++)
  17.     {
  18.         s=s*p[i];
  19.         if (s<=n) mysearch(i+1,s,jj,k*(jj+1));
  20.     }
  21. }
  22. int main()
  23. {
  24.    n=100000;
  25.    mysearch(0,1,30,1);
  26.    cout<<maxs<<' '<<maxk;
  27. }
复制代码
回复 支持 反对

使用道具 举报

9

主题

26

帖子

111

积分

禁止发言

积分
111
地板
发表于 2018-5-26 21:27:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 06:38 , Processed in 0.100765 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表