zoukankan      html  css  js  c++  java
  • Codeforces 757B:Bash's Big Day(分解因子+Hash)

    http://codeforces.com/problemset/problem/757/B

    题意:给出n个数,求一个最大的集合并且这个集合中的元素gcd的结果不等于1。

    思路:一开始把素数表打出来,发现有9k+个数,不能暴力枚举。发现O(sqrt(n)*n)似乎可行,就枚举因子,然后出现过的因子就在Hash[]加1,最后枚举素数表里的元素,找出现次数最多的,因为那些数都可以映射在素数表里面。注意最少的ans是1.

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <cstring>
     5 #include <string>
     6 #include <cmath>
     7 #include <queue>
     8 #include <vector>
     9 #include <map>
    10 #include <set>
    11 #include <stack>
    12 using namespace std;
    13 #define INF 0x3f3f3f3f
    14 #define N 100010
    15 typedef long long LL;
    16 int prime[N], num[N], cnt;
    17 int Hash[N];
    18 
    19 void biao() {
    20     for(int i = 2; i <= 100000; i++) {
    21         int tmp = sqrt(i); bool flag = 0;
    22         for(int j = 2; j <= tmp; j++) {
    23             if(i % j == 0) {
    24                 flag = 1; break;
    25             }
    26         }
    27         if(!flag) prime[++cnt] = i;
    28     }
    29 }
    30 
    31 int main() {
    32     biao();
    33     int n;
    34     scanf("%d", &n);
    35     for(int i = 1; i <= n; i++) {
    36         scanf("%d", &num[i]);
    37         Hash[num[i]]++;
    38         int tmp = sqrt(num[i]);
    39         for(int j = 2; j <= tmp; j++) {
    40             if(num[i] % j == 0) {
    41                 Hash[j]++;
    42                 if(j != num[i] / j) Hash[num[i] / j]++;
    43             }
    44         }
    45     }
    46     int ans = 1;
    47     for(int i = 1; i <= cnt; i++) {
    48         if(ans < Hash[prime[i]]) {
    49             ans = Hash[prime[i]];
    50         }
    51     }
    52     cout << ans << endl;
    53     return 0;
    54 }
  • 相关阅读:
    游戏开发中——垂直同步、绘制效率、显示器刷新频率与帧率
    python 异常
    python 多文件知识
    python if,for,while
    python 算术运算
    1.英语单词笔记
    Java import的作用
    java基础点
    Eclipse Java注释模板设置详解
    Java文档注释详解
  • 原文地址:https://www.cnblogs.com/fightfordream/p/6281533.html
Copyright © 2011-2022 走看看