zoukankan      html  css  js  c++  java
  • 洛谷 2158 [SDOI2008]仪仗队

    Description

    作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。 现在,C君希望你告诉他队伍整齐时能看到的学生人数。

    Input

    共一个数N

     Output

    共一个数,即C君应看到的学生人数。

    Sample

    输入样例#1:
    4
    输出样例#1:
    9

    Hints

    【数据规模和约定】

    对于 100% 的数据,1 ≤ N ≤ 40000

    Solution

    假设某一个小朋友与C君横向相距i条边,竖向相距j条边,那么i,j互质时,可以被C君看到

    某个方向相距0条边单独计算,分别相距1条边单独计算

    #include<algorithm>
    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    using namespace std;
    int o[40011],phi[40044],pri[40044];         //少看一个0 
    void getphi(int n)
    {
    	int p=0;
    	o[1]=0;phi[1]=1;
    	for(int i=2;i<=n;i++)
    	{
    		if(!o[i])
    		  pri[++p]=i,phi[i]=i-1;
    		for(int j=1;j<=p&&pri[j]*i<=n;j++)
    		{
    			o[pri[j]*i]=1;
    			if(i%pri[j]==0)
    			{
    				phi[i*pri[j]]=phi[i]*pri[j];
    				break;	
    			}
    			else
    			  phi[i*pri[j]]=phi[i]*(pri[j]-1);
    		}
    	}
    }
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	getphi(n-1);
    	for(int i=2;i<=n-1;i++)
    	  phi[i]+=phi[i-1];
    	printf("%d",phi[n-1]*2+1);
    	return 0;
    }
  • 相关阅读:
    【LeetCode】155. Min Stack 最小栈
    【Java】修改Eclipse默认编码
    负数取模
    【算法第四版笔记】1.1 基础编程模型
    【计算方法】02
    【计算方法】01
    【Java】Java8中List排序
    选择排序算法
    排序算法
    【Java】Eclipse修改JSP文件默认编码
  • 原文地址:https://www.cnblogs.com/charlotte-o/p/7683944.html
Copyright © 2011-2022 走看看