zoukankan      html  css  js  c++  java
  • CF1174C Ehab and a Special Coloring Problem(数论)

    做法

    (x)互质的数填不同的数,把有向关系表示出来,发现边数是不能承受的

    反过来想,成倍数关系填相同的数,把这些数想象成一条链,而这条链开始的数一定是质数,(sumlimits_{prime_i}frac{n}{prime_i})是可以承受的

    把这条链的点赋一个相同的值

    Code

    #include<bits/stdc++.h>
    using namespace std;
    typedef int LL;
    const LL maxn=1e6+9;
    inline LL Read(){
        LL x(0),f(1); char c=getchar();
        while(c<'0' || c>'9'){
            if(c=='-') f=-1; c=getchar();
        }
        while(c>='0' && c<='9'){
            x=(x<<3)+(x<<1)+c-'0'; c=getchar();
        }return x*f;
    }
    LL n,ans,tot;
    LL visit[maxn],prime[maxn],phi[maxn],a[maxn];
    int main(){
    	n=Read();
    	phi[1]=1;
    	for(LL i=2;i<=n;++i){
    		if(!visit[i]){
    			prime[++tot]=i;
    			phi[i]=i-1;
    		}
    		for(LL j=1;prime[j]*i<=n;++j){
    			visit[prime[j]*i]=true;
    			if(i%prime[j]==0){
    				phi[prime[j]*i]=phi[i]*prime[j];
    				break;
    			}else
    			    phi[prime[j]*i]=phi[i]*phi[prime[j]];
    		}
    	}
    	for(LL i=1;i<=tot;++i){
    		LL now(prime[i]);
    		a[now]=i;
    		LL val(now<<1);
    		while(val<=n){
    			a[val]=i;
    			val+=now;
    		}
    	}
    	for(LL i=2;i<=n;++i) printf("%d ",a[i]);
    	return 0;
    }
    
  • 相关阅读:
    第十三次ScrumMeeting会议
    第十二次ScrumMeeting博客
    第十一次ScrumMeeting会议
    Alpha阶段事后分析
    Alpha阶段展示
    Alpha阶段发布说明
    团队项目-第十次scrum 会议
    团队项目-第五次Scrum 会议
    # 团队项目测评博客
    # Beta冲刺前准备
  • 原文地址:https://www.cnblogs.com/y2823774827y/p/10973538.html
Copyright © 2011-2022 走看看