zoukankan      html  css  js  c++  java
  • CF364D Ghd

    题目链接

    采用随机的思想,钦定一个一定对答案有贡献的数。把这个数的所有因子拿出来求个贡献就好。(随机 (10) 次错误的概率就是 (frac 1 {2^{10}}))。

    代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    #include<random>
    #include<ctime>
    
    using namespace std;
    
    typedef long long LL;
    const int N = 1000009;
    int n;
    LL a[N], Ans, d[N], f[N];
    mt19937 rnd(time(0));
    
    void init()
    {
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++)
    		scanf("%lld", &a[i]);
    }
    
    void work()
    {
    	for (int qwq = 1; qwq <= 12; qwq++)
    	{
    		LL k = rnd() % n + 1, m = a[k], cnt=0;
    		for (LL i = 1; i * i <= m; i++)
    			if(m % i == 0)
    			{
    				d[++cnt] = i;
    				if (i * i != m)
    					d[++cnt] = m / i;
    			}
    		sort(d + 1, d + 1 + cnt);
    		memset(f, 0, sizeof(f));
    		for (int i = 1; i <= n; i++)
    			f[lower_bound(d + 1, d + 1 + cnt, __gcd(a[i], m)) - d]++;
    		for (int i = cnt; i; i--)
    		{
    			int tot = 0;
    			for (int j = i; j <= cnt; j++)
    				if(d[j] % d[i] ==0)
    					tot += f[j];
    			if(tot >= (n - 1) / 2 + 1)
    			{
    				Ans = max(Ans, d[i]);
    				break;
    			}
    		}
    	}
    	printf("%lld
    ", Ans);
    }
    
    int main()
    {
    	init();
    	work();
    	return 0;
    }
    
    
  • 相关阅读:
    DAY7-面向对象之封装
    Java遇到的问题、错误——持续更新
    008单例、继承、final
    java一些使用
    2.1端口扫描器
    PyCharm设置
    常用算法
    PyCharm最新2018激活码,最新方法
    004数组
    042多进程
  • 原文地址:https://www.cnblogs.com/With-penguin/p/13760338.html
Copyright © 2011-2022 走看看