two pointers,先將數列公升序排序,然後查詢最長完美數列。詳解見另一篇部落格。
1/*21030. 完美數列3*/
45 #include 6 #include
7 #include 8 #include 9 #include 10
11#define maxn 100002
12int num[maxn] = ;
1314
int cmp(const
void* a, const
void*b)
1718
intmain()
24//
將陣列公升序排序
25 qsort(num, n, sizeof(int
), cmp);
26int result = 0; //
儲存當前求得的最大長度
27for(i=0; i//
序列開始位置
28for(j=i+result; j//
使用當前最大長度
29if((double)num[j]/num[i]<=p)
33 } else36}
37}38 printf("%d"
, result);
3940
return0;
41 }
1030 完美數列
給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的引數。第二行給出n個...
1030 完美數列
1030.完美數列 給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的...
1030 完美數列
給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的引數。第二行給出n個...