基準時間限制:1 秒 空間限制:131072 kb 分值: 40
把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1-n中複雜程度最高的那個數。
例如:12的約數為:1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。
input
第1行:乙個數t,表示後面用作輸入測試的數的數量。(1 <= t <= 100)
第2 - t + 1行:t個數,表示需要計算的n。(1 <= n <= 10^18)
output
共t行,每行2個數用空格分開,第1個數是答案,第2個數是約數的數量。
input示例
5 1
10 100
1000
10000
output示例
1 1
6 4
60 12
840 32
7560 64
思路:假設我們知道在範圍中x是我們要的答案,那麼我們唯一分解定理展開一下: x=
pa11
pa22
...p
akk x=p
1a1p
2a2.
..pk
ak
假設p1到pk從小到大,我們觀察一下a1到ak的性質,發現:設
i<
j,若p
ip
i 則必然a i>=aj a i>=aj , 證明是反證法,假設ai a i ,那麼我們把ai和aj對調,對因子總數不會發生變化,但是x的大小反而會跟小,也就是說答案不會更差,得證。算是貪心的思想。 **: #include #include #include #include #define ull unsigned long long #define ll long long #define ul unsigned int #define maxn 60 using namespace std; int prime[maxn]; bool isp[maxn]; int cnt=0; void init() for(int j=0;jtrue; if(i%prime[j]==0)break;}} }ll n; ll ans; ll _max; void dfs(int cur,int limit,ll temp,ll d) ll now=temp; for(int i=1;i<=limit;i++) }int main() 把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 100 第2 t 1行 t個數... 1060 最複雜的數 ural 1748 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個... 反素數反素數 8005979?fr aladdin 題目等價於求1 n內最大的反素數 由其兩個性質 可以直接爆搜 還有注意細節處理 判斷當前值乘某個素因子是否符合條件時 要兩邊同除該素因子 否則爆long long include using namespace std define ll long...#include
51Nod 1060 最複雜的數
51nod 1060 最複雜的數
最複雜的數 51Nod 1060