zoukankan      html  css  js  c++  java
  • Codeforces 1349A 1350C Orac and LCM

    题意

    给出一个长度为(n)的数组(a),计算(gcd({ extrm{lcm}({a_i,a_j}) | i<j}))

    分析

    对每个数质因子分解,对每个质因子用数组存下出现的幂次。

    单独考虑一个质因子(p)对答案的贡献,若(a_i,a_j)中质因子(p)的幂次分别为(k_1,k_2(k1,k2>=0)),那么( extrm{lcm} (a_i,a_j))(p)的幂次为( extrm{max} (k_1,k_2))

    (n)个数都有质因子(p),且(n)个数中第二小的幂次为(k),贡献即为(p^k)

    (n-1)个数有质因子(p),且(n-1)个数中最小的幂次为(k),贡献即为(p^k)

    将所有质因子的贡献乘起来就是答案。

    Code

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<iomanip>
    #include<sstream>
    #include<cstdio>
    #include<string>
    #include<vector>
    #include<bitset>
    #include<queue>
    #include<cmath>
    #include<stack>
    #include<set>
    #include<map>
    #define rep(i,x,n) for(int i=x;i<=n;i++)
    #define per(i,n,x) for(int i=n;i>=x;i--)
    #define sz(a) int(a.size())
    #define rson mid+1,r,p<<1|1
    #define pii pair<int,int>
    #define lson l,mid,p<<1
    #define ll long long
    #define pb push_back
    #define mp make_pair
    #define se second
    #define fi first
    using namespace std;
    const double eps=1e-8;
    const int mod=1e9+7;
    const int N=2e5+10;
    const int inf=1e9;
    int n;
    vector<int>g[N];
    ll ksm(ll a,ll b){
    	ll ret=1;
    	while(b){
    		if(b&1) ret=ret*a;
    		b>>=1;
    		a=a*a;
    	}
    	return ret;
    }
    int main(){
    	//ios::sync_with_stdio(false);
    	//freopen("in","r",stdin);
    	cin>>n;
    	rep(i,1,n){
    		int x;
    		cin>>x;
    		for(int j=2;j*j<=x;j++){
    			int cnt=0;
    			while(x%j==0){
    				x/=j;
    				++cnt;
    			}
    			if(cnt){
    				g[j].pb(cnt);
    			}
    		}
    		if(x>1) g[x].pb(1);
    	}
    	ll ans=1;
    	rep(i,1,2e5){
    		sort(g[i].begin(), g[i].end());
    		if(g[i].size()==n-1){
    			ans*=ksm(i,g[i][0]);
    		}else if(g[i].size()==n){
    			ans*=ksm(i,g[i][1]);
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    函数名的应用/列表推导式
    装饰器/内置函数
    函数的基础
    文件的改的操作
    常用str
    python 定时器 timer QTimer
    Python 2.7.16 pyinstaller3.0 生成exe可执行文件
    python 根据excel单元格内容获取该单元格所在的行号
    python 实现仪器LAN口通信(FLUKE 8846)
    VS2019 MSB8041 MSB8042 Error
  • 原文地址:https://www.cnblogs.com/xyq0220/p/12883386.html
Copyright © 2011-2022 走看看