HDU2521 反素数

来源:互联网 发布:淘宝卖蜂蜜需要什么 编辑:程序博客网 时间:2024/06/05 13:25

题目链接:HDU2521

反素数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5657    Accepted Submission(s): 3312


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
32 31 1047 359
 

Sample Output
26240
Hint
2的因子为:1 210的因子为:1 2 5 10
 
题意:求a到b这些数里因子最多的数。

题目分析:本来为了写一道题特地跑来普及反素数的知识,结果这题根反素数毛线关系都没有,打表水。

////  main.cpp//  HDU2521////  Created by teddywang on 16/5/16.//  Copyright © 2016年 teddywang. All rights reserved.//#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int ans[6000];void init(){    for(int i=1;i<6000;i++)    {        for(int j=1;j<=i/2;j++)        {            if(i%j==0) ans[i]++;        }        ans[i]++;    }}int main(){    init();    int a,b,n;    cin>>n;    while(n--)    {        cin>>a>>b;        int maxn=0,maxs=0;        for(int i=a;i<=b;i++)        {            if(ans[i]>maxn)            {                maxn=ans[i];                maxs=i;            }        }        cout<<maxs<<endl;    }}


0 0
原创粉丝点击