• HDU 5317 RGCDQ


    题意:f(i)表示i的质因子个数,给l和r,问在这一区间内f(i)之间任意两个数最大的最大公倍数是多少。

    解法:先用筛法筛素数,在这个过程中计算f(i),因为f(i)不会超过7,所以用一个二维数组统计前i个数中每个f(i)出现的次数,当询问l和r时,用num[r] - num[l - 1],得到这一区间内的结果,然后讨论一下,如果出现过6和3则答案可能为3,如果出现过4和2则答案可能为2,如果某数字出现两次及以上则答案可能是这个数字,以上几种情况取最大值,即为答案。

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<math.h>
    #include<limits.h>
    #include<time.h>
    #include<stdlib.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #define LL long long
    
    using namespace std;
    
    int f[1000005];
    int num[1000005][8];
    void init()
    {
        for(int i = 2; i < 1000005; i++)
        {
            if(f[i] == 0)
            {
                f[i] = 1;
                for(int j = i + i; j < 1000005; j += i)
                    f[j]++;
            }
        }
        for(int i = 2; i < 1000005; i++)
        {
            memcpy(num[i], num[i - 1], sizeof num[i - 1]);
            num[i][f[i]]++;
        }
    }
    int main()
    {
        init();
        int T;
        while(~scanf("%d", &T))
        {
            while(T--)
            {
                int l, r;
                scanf("%d%d", &l, &r);
                int a[8] = {0};
                for(int i = 1; i < 8; i++)
                    a[i] = num[r][i] - num[l - 1][i];
                int ans = 1;
                for(int i = 7; i > 0; i--)
                    if(a[i] > 1)
                {
                    ans = i;
                    break;
                }
                if(a[4] && a[2])
                    ans = max(ans, 2);
                if(a[6] && a[3])
                    ans = max(ans, 3);
                printf("%d
    ", ans);
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    阿里云播放器弹幕选型
    使用swiper组件,轮播图在高分辨率情况下变形,图片拉高该如何解决?
    解决图片无法设置hover,以设置图片的阴影
    当标题文字超出长度后,后续用...来代替
    windows 安装wget
    【Go学习】GO中...的用法
    【Go】go test
    tcpdump工具及使用介绍
    leetcode32.最长有效括号
    Global Round 21 部分题解
  • 原文地址:https://www.cnblogs.com/Apro/p/4688533.html
Copyright © 2020-2023  润新知