#include
using
namespace
std;
/*求[1,n]中約數最多的數和約數的個數 (1<=n<=e^18)
反素數對於任何正整數x,其約數的個數記做g(x).例如g(1)=1,g(6)=4.
如果某個正整數x滿足:對於任意i(0=s2>=s3>=....
*/const
int maxn=1e3+5;
typedef
long
long ll;
int p;
int prime[maxn];
int is_prime[maxn];
ll n,ans;
int sum;
//素數篩,預處理素數
void sieve(int n)
is_prime[0]=is_prime[1]=1;
p=0;
for(int i=2;i<=n;i++)}}
}void dfs(int prime_id,int pre_index,ll temp,int num)
//如果約數個數相同,將最優解更新為較小的數
if(num==sum&&ans>temp)
if(prime_id>=16)//只需要用到前面10多個素數
for(int i=1;i<=pre_index;i++)//列舉每個質因子的個數
}}int main()
return0;}
/*以g(12)=6為例,搜尋樹為
11 2 4 8
1 1 3 1 3 9 1 3 9 27
*/
51nod 1060 最複雜的數(反素數)
最複雜的數 學習 把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 100 第2...
51nod 1060 最複雜的數 反素數
1060 最複雜的數 把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 100 ...
51Nod 1060 最複雜的數
把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 100 第2 t 1行 t個數...