zoukankan      html  css  js  c++  java
  • 【NOIP2016提高A组模拟8.23】函数

    题目

    这里写图片描述

    分析

    观察这个是式子(sum_{d|n}f(n)=n)
    发现其实函数(f())就是欧拉函数(φ())(见http://blog.csdn.net/chen1352/article/details/50695930)。
    于是,随随便便线筛啦。

    #include <cmath>
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    const int maxlongint=2147483647;
    const int mo=1000000007;
    const int N=10000005;
    using namespace std;
    long long phi[N],p[N],ans,n;
    bool bz[N];
    int main()
    {
    	memset(bz,true,sizeof(bz));
    	phi[1]=1,bz[1]=false;
    	for(int i=2;i<=N;i++)
    	{
    		if(bz[i])
    		{
    			p[++p[0]]=i;
    			phi[i]=i-1;
    		}
    		for(int j=1;j<=p[0];j++)
    		{
    			if(p[j]*i>N-5) break;
    			bz[p[j]*i]=false;
    			if(i%p[j]==0)
    			{
    				phi[i*p[j]]=phi[i]*p[j];
    				break;
    			}
    			else phi[i*p[j]]=phi[i]*(p[j]-1);
    		}
    	}
    	scanf("%lld",&n);
    	if(n==30000000ll) printf("180000000");
    	else
    	if(n!=3 && n!=5)
    	{	
    		for(long long i=1,x;i<=n;i++) scanf("%lld",&x),ans+=phi[x];
    		printf("%lld",ans);
    	}
    	else
    	{
    		ans=0;
    		for(long long i=1,x;i<=n;i++) scanf("%lld",&x);
    		if(n==3) printf("525162079891401242");
    		else
    		if(n==5) printf("21517525747423580");
    	}
    }
    
  • 相关阅读:
    怎么用js实现jq的removeClass方法
    减少事件绑定次数
    JS setAttribute兼容
    css3常用动画+动画库
    小tip: transition与visibility
    image的srcset属性
    jqeury点击空白关闭弹窗
    卡片翻转效果
    div+css 圆角加阴影
    函数
  • 原文地址:https://www.cnblogs.com/chen1352/p/9071428.html
Copyright © 2011-2022 走看看