hdoj 5317 RGCDQ

时间:2023-01-08 16:42:43

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5317

     #include<stdio.h>

     ;
     int F[MAXN];
     bool flag[MAXN];
     ][MAXN];

     void init(){
         //对数据进行初始化
         ; i <= MAXN ; ++i)
         if(!flag[i]){
             F[i]++;
             ; j <= MAXN; j += i ){
                 flag[j] = true;
                 F[j]++;
             }
         }
         //进行筛选,素数F值为1,其余数看其质因数种类数
         ; i <= MAXN ; ++i){
             ; j <= ; ++j){
                 S[j][i] = S[j][i-] + ( F[i] == j );
             }
         }
         //由数据范围可知,F的值不超过7,通过动态规划计算每一个值在每一个位置对应的个数
     }
     int main()
     {
         int T;
         int l, r;
         ];
         init();
         scanf("%d",&T);
         ){
             ;
             scanf("%d%d",&l,&r);
             ; i <= ; ++i){
                 cnt[i] = S[i][r] - S[i][l-];
 //                printf("%d %d ",i,cnt[i]);
             }
             //统计个数
             ]+cnt[]+cnt[]>=)
                 ans = ;
             ]+cnt[]>=)
                 ans = ;
             ]>=)
                 ans = ;
             ]>=)
                 ans = ;
             ]>=)
                 ans = ;
             ]>=)
                 ans = ;
             printf("%d\n",ans);
         }

     }
     ///总结:先分析数据范围,读清题目,简化过程
     ///对于T较多的情况,可以先初始化