1. 程式人生 > >【洛谷習題】又是畢業季II

【洛谷習題】又是畢業季II

href 分享 tar click 代碼 int ons const num

題目鏈接:https://www.luogu.org/problemnew/show/P1414


一開始看到的時候覺得很難,和之前的又是畢業季I相比確實更難了。

仔細做做,發現思路還是可以的,因為inf的範圍較小,所以可以枚舉1到inf,然後累計他們是多少個數的因數。

這樣再遍歷每個數,根據他是多少個數的因數去更新答案即可。

技術分享圖片
 1 #include <cstdio>
 2 #include <algorithm>
 3 
 4 using namespace std;
 5 
 6 const int maxn = 1e4 + 5, inf = 1e6 + 5
; 7 8 int vis[inf], num[inf], ans[maxn]; 9 10 int main() { 11 int n, in, mmax = 0; 12 scanf("%d", &n); 13 for (int i = 1; i <= n; ++i) { 14 scanf("%d", &in); 15 ++vis[in]; 16 mmax = max(mmax, in); 17 } 18 for (int i = 1; i <= mmax; ++i)
19 for (int j = i; j <= mmax; j += i) 20 num[i] += vis[j]; 21 for (int i = 1; i <= mmax; ++i) 22 for (int j = num[i]; j >= 1; --j) 23 ans[j] = i; 24 for (int i = 1; i <= n; ++i) printf("%d\n", ans[i]); 25 }
AC代碼

【洛谷習題】又是畢業季II