zoukankan      html  css  js  c++  java
  • HDOJ(HDU) 2521 反素数(因子个数~)

    Problem Description
    反素数就是满足对于任意i(0< i < x),都有g(i) < g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。

    Input
    第一行输入n,接下来n行测试数据
    输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].

    Output
    输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.

    Sample Input
    3
    2 3
    1 10
    47 359

    Sample Output
    2
    6
    240

    Hint
    2的因子为:1 2
    10的因子为:1 2 5 10

    就是找出那个区间中,因子最多的那个数,如果最多因子数相等,那么输出那个最小的数~
    打表~把每个1-5000的因子的个数打表打出来!
    再找那个区间中,因子数最多的就行!

    
    import java.util.Scanner;
    
    public class Main{
    
        static int db[] = new int[5001];
        public static void main(String[] args) {
            dabiao();
            Scanner sc= new Scanner(System.in);
            int t =sc.nextInt();
            while(t-->0){
                int a =sc.nextInt();
                int b =sc.nextInt();
                int max=db[a];
                int k=a;
                for(int i=a;i<=b;i++){
                    if(db[i]>max){
                        k=i;
                        max=db[i];
                    }
                }
                System.out.println(k);
            }
        }
        private static void dabiao() {
            db[1]=1;
            db[2]=2;
            for(int i=3;i<db.length;i++){
                db[i]=emirp(i);
            }
        }
        private static int emirp(int m) {
            int sum=0;
            for(int i=1;i<=m;i++){
                if(m%i==0){
                    sum++;
                }
            }
            return sum;
        }
    }
    
  • 相关阅读:
    border-image
    实现页面变成灰色色调
    ie 浏览器“浏览器模式”和“文档模式”之间的区别
    vue-loader
    vue-cli创建的项目中使用sass
    v-html
    vue $forceUpdate 强制更新
    webpack-dev-server 不是内部命令
    vue devtools 以及热更新
    事件机制
  • 原文地址:https://www.cnblogs.com/webmen/p/5739196.html
Copyright © 2011-2022 走看看