• bzoj 2190 仪仗队(欧拉函数)


    2190: [SDOI2008]仪仗队

    Time Limit: 10 Sec  Memory Limit: 259 MB
    Submit: 2245  Solved: 1413
    [Submit][Status][Discuss]

    Description

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

    Input

      共一个数N。

    Output

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

    Sample Input

      4

    Sample Output

      9


    HINT

    【数据规模和约定】   对于 100% 的数据,1 ≤ N ≤ 40000

    将正方形从中间分开,上下两部分对称,我们求上部分发现,能看见的人数是1到n-1的欧拉函数的和ans  则总共能看到的人数为2*ans+1(1是对角线上的那个人)

    #include<stdio.h>
    #include<string.h>
    #include<cstdio> 
    #include<string>
    #include<math.h>
    #include<algorithm>
    #define LL long long
    #define PI atan(1.0)*4
    #define DD double
    #define MAX 200200
    #define mod 100
    #define dian 1.000000011
    #define INF 0x3f3f3f
    using namespace std;
    int el(int x)
    {
    	int ans=x;
    	int i,j;
    	for(i=2;i*i<=x;i++)
    	{
    		if(x%i==0)
    		    ans=ans/i*(i-1);
    		while(x%i==0)
    		    x/=i;
    	}
    	if(x>1)
    	   ans=ans/x*(x-1);
    	return ans;
    }
    int main()
    {
        int n,m,j,i,t;
        while(scanf("%d",&n)!=EOF)
        {
        	int sum=0;
        	if(n==1)
        	{
        		printf("0
    ");
        		continue;
        	}
        	for(i=1;i<n;i++)
        		sum+=el(i);
        	printf("%d
    ",2*sum+1);
        }
    	return 0;
    }
    

      

  • 相关阅读:
    Cocos2d-x 使用物理引擎进行碰撞检测
    Cocos2d粒子系统二
    cocos2d(粒子效果编辑器)
    关于Cococs中的CCActionEase(下)
    关于Cococs中的CCActionEase(中)
    关于Cococs中的CCActionEase
    call()和apply() 的区别
    WebStorm 使用快捷键大全
    WebStorm 的使用(一)
    导入xlsx,文件到sqlite3数据库
  • 原文地址:https://www.cnblogs.com/tonghao/p/5284842.html
Copyright © 2020-2023  润新知