解题思路:

注意事项:

参考代码:

#include<bits/stdc++.h>

using namespace std;

int const MAX = 100005;

int prime[MAX];

int ma, cnt, l, r;

 

void get_prime()  

{

    bool get[MAX];

    memset(get, true, sizeof(get));

    get[0] = get[1] = false;

    for(int i = 2; i <= sqrt(MAX); i++)

        if (get[i])

            for(int j = i * i; j <= MAX; j += i)

                  get[j] = false;

    for(int i = 2; i <= MAX; i++)

        if(get[i])

            prime[++cnt] = i;

}

 

 

void search(int from, int tot, int num, int left, int right)

{

    ma = tot > ma ? tot : ma;  

    if((left == right) && (left > num))

        search(from, tot * 2, num * left, 1, 1);

    for(int i = from; i <= cnt; i++)    

    {

        if (prime[i] >right)   

            return;

        else

        {

            int j = prime[i], x = left - 1, y = right, n = num, t = tot, m = 1;

            while(true)

            {

                m ++;   

                t += tot;

                x /= j;

                y /= j;

                if (x == y)

                    break;

                n *= j;

                search(i + 1, t, n, x + 1, y);

            }

            if (tot < (ma / (1 << m)))

                return;

        }

   }

}

 

int main()

{

    cnt = 0;

    get_prime();

    cin>>l>>r;

 

    

        if((l == 1) && (r == 1))

            ma = 1;

        else

        {

            ma = 2;

            search(1, 1, 1, l, r);

        }

        printf("%d\n", ma);

}


点赞(1)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论