• n的约数(爆搜 约数定理)


    链接:https://ac.nowcoder.com/acm/contest/907/B
    来源:牛客网
     

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld

    题目描述

    t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数

    输入描述:

    第一行一个正整数t
    之后t行,每行一个正整数n

    输出描述:

    输出t行,每行一个整数,表示答案

    示例1

    输入

    复制

    5
    13
    9
    1
    13
    16

    输出

    复制

    6
    4
    1
    6
    6

    备注:

    对于100%的数据,t <= 500 , 1 <= n <= 1000000000000000000
    

    无法判断的复杂度

    君子坦荡荡,小人常戚戚

    #include<bits/stdc++.h>
    using namespace std;
    long long ans=0;
    long long prime[20] = {0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51};
    void dfs(long long x,int lim,long long num,int pos,long long now)//n 限制 当前数 递归层数 当前答案
    {
        if(num>x||lim==0) return ;
        if(now>ans) ans=now;
        long long tmp=1;
        long long cnt=0;
        for(int i=1;i<=lim;i++)
        {
            tmp=tmp*prime[pos];
            if(tmp>x/num) break;
            dfs(x,i,num*tmp,pos+1,now*(i+1));
        }
        return ;
    }
    int main()
    {
       int t;
       scanf("%d",&t);
       while(t--)
       {
           long long  n;
           scanf("%lld",&n);
           ans=0;
           dfs(n,64,1,1,1);
           printf("%lld
    ",ans);
       }
    }
    
  • 相关阅读:
    LIBSVM
    tf-idf
    DIV+CSS例子
    网页背景设置
    获取JDBC中的ResultSet的记录的条数
    SQL 基本语句
    经典SQL语句大全
    JS(截取字符串,显示当前系统时间yyyy-MM-dd,从文本框得到的数值计算)
    JavaScript实现全排列
    Java发送邮件
  • 原文地址:https://www.cnblogs.com/caowenbo/p/11852255.html
Copyright © 2020-2023  润新知