zoukankan      html  css  js  c++  java
  • CF1470B Strange Definition

    搞一搞式子:(frac{operatorname{lcm}(x,y)}{gcd(x,y)}=p^2)

    (operatorname{lcm}) 弄掉:(xy=(p imesgcd(x,y))^2)

    也就是说 (xy) 必须是完全平方数才有关联,也就是说每个质因子出现次数的奇偶性必须相同,而这东西是有传递性的,我们可以把数根据每个质因子出现次数的奇偶性划分成若干个集合,存在某个质因子出现次数不同就归入不同集合,集合内两两均有关联。

    显然经过第一秒同一集合内的数会变得相同,且质因子出现次数只存在奇变偶的情况。对于一个集合,如果其中的数变成了完全平方数,那么接下来也一直会是完全平方数。

    如果其中的数仍然没有变成完全平方数,那么接下来也一直不会是完全平方数,这很好证。假设此时有某个集合并入了当前集合,说明那个集合的大小为偶数,而大小为偶数的集合里面均变成了完全平方数,与假设不符。

    所以这些集合会一直独立且大小为奇数,每个质因子出现次数的奇偶性保持不变。

    于是分 (w=0)(w>0) 讨论即可,时间复杂度 (O(sumsqrt a+sum nlog n))

    code:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define N 300005
    #define Max(x,y)((x)>(y)?x:y)
    #define For(i,x,y)for(i=x;i<=(y);i++)
    int a[N],b[N];
    ll read()
    {
    	ll A;
    	bool K;
    	char C;
    	C=A=K=0;
    	while(C<'0'||C>'9')K|=C=='-',C=getchar();
    	while(C>'/'&&C<':')A=(A<<3)+(A<<1)+(C^48),C=getchar();
    	return(K?-A:A);
    }
    int main()
    {
    	ll w;
    	int t,n,i,s,c,q,tot;
    	t=read();
    	while(t--)
    	{
    		n=read();
    		For(i,1,n)a[i]=read();
    		q=read();
    		For(i,1,n)
    		{
    			c=s=1;
    			while(a[i]>1)
    			{
    				if(++c>sqrt(a[i]))break;
    				while(!(a[i]%(c*c)))a[i]/=c*c;
    				if(!(a[i]%c))s*=c,a[i]/=c;
    			}
    			b[i]=s*a[i];
    		}
    		sort(b+1,b+n+1);
    		s=c=1;
    		tot=0;
    		For(i,2,n+1)
    		if(b[i]==b[i-1])s++;
    		else
    		{
    			c=Max(c,s);
    			if(b[i-1]==1||!(s&1))tot+=s;
    			s=1;
    		}
    		while(q--)w=read(),printf("%d
    ",(w?Max(tot,c):c));
    	}
    	return 0;
    }
    /*1
    3
    3 27 4
    2
    0
    1*/
    
  • 相关阅读:
    window.parent 、window.top及window.self 详解
    js中的变量提升和函数提升
    IE不支持ES6语法的解决方案——Babel
    JavaScript 文件拖拽上传插件 dropzone.js 介绍
    C# DataTable 增加行与列
    group by 与 order by 一起使用的时候
    window.open传递多个参数
    Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
    ASP.NET中调用百度地图API
    C# 读取Excel中的数据到DataTable中
  • 原文地址:https://www.cnblogs.com/May-2nd/p/14361499.html
Copyright © 2011-2022 走看看