南邮 OJ 1166 数字实力

数字实力

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 380            测试通过 : 71 

比赛描述

每一个数字都有自己的实力,我们可以从不同的角度来描述数字的实力。我们做出如下定义:一个数字n的实力是它所拥有的因数个数。例如:6的实力是,因为它有4个因数(1236)。 现在我们需要知道从1开始到某一个数n中,哪个数字拥有最强的实力。

输入

一个正整数n ( 0< n < 500000)

输出

两个数字msm为从1n中具有最强实力且最小的数字。sm的实力。

样例输入

8

样例输出

6 4

提示

18,68都具有最大的实力4。然而你应该输出较小的6

题目来源

计算机学院/软件学院第二届ACM程序设计大赛



#include <cstdio>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    if(n == 1)
        printf("1 1\n");
    else if(n == 2 || n == 3)
        printf("2 2\n",n);
    else if(n >= 4 && n < 6)
        printf("4 3\n");
    else if(n >= 6 && n < 12)
        printf("6 4\n");
    else if(n >= 12 && n < 24)
        printf("12 6\n");
    else if(n >= 24 && n < 36)
        printf("24 8\n");
    else if(n >= 36 && n < 48)
        printf("36 9\n");
    else if(n >= 48 && n < 60)
        printf("48 10\n");
    else if(n >= 60 && n < 120)
        printf("60 12\n");
    else if(n >= 120 && n < 180)
        printf("120 16\n");
    else if(n >= 180 && n < 240)
        printf("180 18\n");
    else if(n >= 240 && n < 360)
        printf("240 20\n");
    else if(n >= 360 && n < 720)
        printf("360 24\n");
    else if(n >= 720 && n < 840)
        printf("720 30\n");
    else if(n >= 840 && n < 1260)
        printf("840 32\n");
    else if(n >= 1260 && n < 1680)
        printf("1260 36\n");
    else if(n >= 1680 && n < 2520)
        printf("1680 40\n");
    else if(n >= 2520 && n < 5040)
        printf("2520 48\n");
    else if(n >= 5040 && n < 7560)
        printf("5040 60\n");
    else if(n >= 7560 && n < 10080)
        printf("7560 64\n");
    else if(n >= 10080 && n < 15120)
        printf("10080 72\n");
    else if(n >= 15120 && n < 20160)
        printf("15120 80\n");
    else if(n >= 20160 && n < 25200)
        printf("20160 84\n");
    else if(n >= 25200 && n < 27720)
        printf("25200 90\n");
    else if(n >= 27720 && n < 45360)
        printf("27720 96\n");
    else if(n >= 45360 && n < 50400)
        printf("45360 100\n");
    else if(n >= 50400 && n < 55440)
        printf("50400 108\n");
    else if(n >= 55440 && n < 83160)
        printf("55440 120\n");
    else if(n >= 83160 && n < 110880)
        printf("83160 128\n");
    else if(n >= 110880 && n < 166320)
        printf("110880 144\n");
    else if(n >= 166320 && n < 221760)
        printf("166320 160\n");
    else if(n >= 221760 && n < 277200)
        printf("221760 168\n");
    else if(n >= 277200 && n < 332640)
        printf("277200 180\n");
    else if(n >= 332640 && n < 498960)
        printf("332640 192\n");
    else 
        printf("498960 200\n");
    return 0;
}







你可能感兴趣的:(ACM,南邮OJ,数字实力)