链接:
https://www.nowcoder.com/acm/contest/82/A
来源:牛客网
来源:牛客网
题目描述
t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数
输入描述:
第一行一个正整数t 之后t行,每行一个正整数n
输出描述:
输出t行,每行一个整数,表示答案
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll prime[101],m,x;
void init()
{
bool is[101];memset(is,1,sizeof(is));
int ans=0;
for(ll i=2;i<101;i++)
{
if(is[i])
{
prime[ans++]=i;
for(int j=i+i;j<101;j+=i)
is[j]=0;
}
}
}
void dfs(ll id,ll num,ll k,ll n)
{
if(k>=16)return;
if(num>m)m=num;
for(ll i=1;i<=n;i++)
{
if(id<=x/prime[k])
{
id=id*prime[k];
dfs(id,num*(i+1),k+1,i);
}
}
}
int main()
{
init();
int T;scanf("%d",&T);
while(T--)
{
scanf("%lld",&x);
m=1;
dfs(1,1,0,15);
printf("%lld\n",m);
}
return 0;
}