码迷,mamicode.com
首页 > 其他好文 > 详细

【luoguP2158】 [SDOI2008]仪仗队

时间:2019-09-17 17:30:26      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:return   button   prime   sha   技术   ++   div   告诉   题目   

 

题目描述

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

输入格式

共一个数N

输出格式

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

输入输出样例

输入 #1
4
输出 #1
9

说明/提示

【数据规模和约定】

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

代码:

#include<cstdio>
#include<iostream>
#include<cstdlib>
#define int long long
const int N = 400010;
using namespace std;
int n,prime[N],phi[N],cnt,tot,ans;
bool vis[N];
void yilnr()
{
	vis[1]=1;
	for(int i=2;i<=n;i++)
	{
		if(!vis[i])
		{
			prime[++cnt]=i;
			phi[i]=i-1;
		}
		for(int j=1 ; j<=cnt && i*prime[j]<=n;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]*phi[prime[j]];
		}
	}
}
signed main()
{
	scanf("%lld",&n);
	yilnr();
	if(n==1)
	{
		cout<<"0";
		return 0;
	}
	for(int i=2;i<=n-1;i++)ans+=phi[i];
	printf("%lld\n",ans*2+3);
	return 0;
}

  

 

【luoguP2158】 [SDOI2008]仪仗队

标签:return   button   prime   sha   技术   ++   div   告诉   题目   

原文地址:https://www.cnblogs.com/yelir/p/11535397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!