zoukankan      html  css  js  c++  java
  • BZOJ 2226 [Spoj 5971] LCMSum

    题解:枚举gcd,算每个gcd对答案的贡献,贡献用到欧拉函数的一个结论

    最后用nlogn预处理一下,O(1)出答案

    把long long 打成int 竟然没看出来QWQ

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    using namespace std;
    const int maxn=1000009;
    const int u=1000000;
    typedef long long Lint;
    
    
    int T;
    int n;
    
    int cntprime;
    int prime[maxn];
    int vis[maxn];
    Lint phi[maxn];
    Lint f[maxn];
    void Lineshake(){
    	vis[1]=1;phi[1]=1;
    	for(int i=2;i<=u;++i){
    		if(!vis[i]){
    			prime[++cntprime]=i;
    			phi[i]=i-1;
    		}
    		for(int j=1;(j<=cntprime)&&(i*prime[j]<=u);++j){
    			vis[i*prime[j]]=1;
    			if(i%prime[j]==0){
    				phi[i*prime[j]]=phi[i]*prime[j];
    				break;
    			}
    			phi[i*prime[j]]=phi[i]*(prime[j]-1);
    		}
    	}
    	phi[1]=1;
    	for(int i=2;i<=u;++i)phi[i]=phi[i]*1LL*i/2;
    }
    
    void minit(){
    	cntprime=0;
    	memset(vis,0,sizeof(vis));
    }
    
    int main(){
    	scanf("%d",&T);
    	minit();
    	Lineshake();
    	for(int d=1;d<=u;++d){
    		for(int k=1;k*d<=u;++k){
    			f[d*k]+=phi[d]*d*k;
    		}
    	}
    	while(T--){
    		scanf("%d",&n);
    		printf("%lld
    ",f[n]);
    	}
    	return 0;
    }
    

      

    自己还是太辣鸡了
  • 相关阅读:
    #include <utility>
    Html的空格显示
    ExtJs自学教程(1):一切从API開始
    天黑的时候,我又想起那首歌
    citrix协议ICA技术原理
    约瑟夫环问题
    数据结构和算法设计专题之---八大内部排序
    HDU
    深入分析C++引用
    八大排序算法总结
  • 原文地址:https://www.cnblogs.com/zzyer/p/8454957.html
Copyright © 2011-2022 走看看