zoukankan      html  css  js  c++  java
  • 1166-数字实力

    描述

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

    输入

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

    输出

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

    样例输入

    8

    样例输出

    6 4

    #include<iostream>
    using namespace std;
    #define MAX 500000
    int prime[MAX];
    bool a[MAX];
    int cnt;
    void Initprime()//?????????
    {
        int i, j;
        cnt = 0;
        for( i=2; i<MAX; i++ )
        {
            if( a[i] == 0 )
            {
                prime[cnt++] = i;
                for( j=2*i; j<MAX; j+=i )
                    a[j] = 1;
            }
        }
    }
    int Div( int m )
    {
        int tmp,ret=1;
        for( int i=0; prime[i]*prime[i]<=m ; i++ )
        {
            if( m % prime[i] == 0 )
            {
                tmp = 0;
                while( m % prime[i] == 0 )
                {
                    tmp ++;
                    m /= prime[i];
                }
                ret = ret * ( tmp+1 );
            }
        }
        if( m != 1 )
            ret = ret * 2;
        return ret;
    }
    
    int main( )
    {
        int n,t;
        int max, ret;
        Initprime( );
            cin>>n;
            max=1;t=1;
            for( int i=1; i<=n; i++ )
            {
                ret=Div(i);
                if( ret > max )
                {
                    max = ret;t=i;
                }
            }
            cout<<t<<" "<<max<<endl; 
        return 0;
    } 
    

      

  • 相关阅读:
    构建乘积数组
    数组中重复的数字
    把字符串转换成整数
    不用加减乘除做加法
    求1+2+3+...+n
    孩子们的游戏(圆圈中最后剩下的数)
    翻转单词顺序列
    扑克牌顺子
    左旋转字符串
    ES6必知必会 —— Module
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3436985.html
Copyright © 2011-2022 走看看