nowcoder N约数个数

n的约数个数

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

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

思路:对前20个质数搜索,质数指数依次递减。

代码:

 1 #include "bits/stdc++.h"
 2 
 3 #define ll  long long
 4 using namespace std;
 5 const int mod=1e9+7;
 6 const int N=1e6+5;
 7 int a[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
 8 
 9 ll ans,n;
10 void dfs(int p,int up,ll res,ll now){
11     if(res>ans) ans=res;
12     for(int tot=1;tot<=up&&now<=n/a[p];tot++){
13         now*=a[p];
14         dfs(p+1,tot,res*(tot+1),now);
15     }
16 }
17 int main() {
18     int t;
19     cin>>t;
20     while(t--){
21         cin>>n;
22         ans=1;
23         dfs(0,63,1,1);
24         cout<<ans<<endl;
25     }
26 }
原文地址:https://www.cnblogs.com/mj-liylho/p/7183293.html