P2158 [SDOI2008]仪仗队
图是关于y=x对称的,横纵坐标一定是互质的否则在之前就被扫过了,所以就可以用欧拉函数再*2就完了。

#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<set>
#include<map>
#include<stack>
#include<cstring>
#define inf 2147483647
#define For(i,a,b) for(register int i=a;i<=b;i++)
#define p(a) putchar(a)
#define g() getchar()
//by war
//2017.11.3
using namespace std;
int n;
int ans;
int prime[];
bool vis[];
int cnt,tot;
int pr[];
void in(int &x)
{
int y=;
char c=g();x=;
while(c<''||c>'')
{
if(c=='-')
y=-;
c=g();
}
while(c<=''&&c>='')x=(x<<)+(x<<)+c-'',c=g();
x*=y;
}
void o(int x)
{
if(x<)
{
p('-');
x=-x;
}
if(x>)o(x/);
p(x%+'');
} void Euler()
{
For(i,,n)
{
if(!vis[i])prime[++cnt]=i;
for(register int j=;j<=cnt&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=true;
if(i%prime[j]==)
break;
}
}
} int Eulerfunction(int x)
{
tot=;
int c=x;
For(i,,cnt)
{
if(prime[i]>x)
break;
if(x%prime[i]==)
pr[++tot]=prime[i];
}
For(i,,tot)
c=c-c/pr[i];
return c;
} int main()
{
in(n);
n--;
Euler();
For(i,,n)
ans+=Eulerfunction(i);
o(ans*+);
return ;
}

最新文章

  1. .Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法
  2. java基础(三)
  3. 关于SqlHelper的详解
  4. 电脑中的Bois是什么
  5. window.open()&amp;&amp;window.showmodaldialog()
  6. 监控Mysql主从环境下Slave延迟状态的操作记录
  7. Linux下运行top命令显示的PR\NI\RES\SHR\S\%MEM TIME+都代表什么
  8. iOS学习之Object-C语言集合
  9. Gridview点击Edit编辑未update和cancel后的问题
  10. HTML5与CSS3基础教程第八版学习笔记11~15章
  11. 对Verilog 初学者比较有用的整理(转自它处)
  12. YII 验证邮箱和QQ号码
  13. ssh端口映射,本地转发
  14. UVA 10129 Play on Words
  15. Spring 3.x企业实用开发实战(1)
  16. NLP︱高级词向量表达(二)——FastText(简述、学习笔记)
  17. .Net Core Web/Console 下使用Nlog
  18. [.NET] 《Effective C#》快速笔记(一)- C# 语言习惯
  19. 用 zotero 管理文献和个人知识库
  20. 使用junit测试

热门文章

  1. Ubuntu16.04安装JDK8与Tomcat7
  2. 《JavaWeb从入门到精通》(明日科技,清华大学出版社)
  3. Confluence 6 附件存储文件系统的分级
  4. leetcode(js)算法之17电话号码的字母组合
  5. selenium 获取input输入框中的值的方法
  6. JPA环境配置
  7. LeetCode(79): 单词搜索
  8. 操作dom获取datatable中的某一行的某一列的数据
  9. cf842C 树形dp+gcd函数
  10. CSS3D写3d画廊滚动