博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SDOI2008】仪仗队
阅读量:5320 次
发布时间:2019-06-14

本文共 1045 字,大约阅读时间需要 3 分钟。

题解

当$(x,y)$能被看到时,$gcd(x,y)=1$,

所以可以求$\sum_{i=0}^n\sum_{j=0}^n[gcd(x,y)=1]$

或者用欧拉函数

代码

#include
#define RG register#define clear(x, y) memset(x, y, sizeof(x));using namespace std;template
inline T read(){ T data=0, w=1; char ch=getchar(); while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if(ch=='-') w=-1, ch=getchar(); while(ch>='0'&&ch<='9') data=(data<<3)+(data<<1)+(ch^48), ch=getchar(); return data*w;}const int maxn(40010);int phi[maxn], prime[maxn], cnt;bool is_prime[maxn];int getphi(int n){ for(RG int i=2;i<=n;i++) { if(!is_prime[i]) { prime[++cnt]=i; phi[i]=i-1; } for(RG int j=1;j<=cnt;j++) { if(prime[j]*i>n) break; is_prime[prime[j]*i]=true; if(!(i%prime[j])) { phi[i*prime[j]]=phi[i]*prime[j]; break; } else phi[i*prime[j]]=phi[i]*(prime[j]-1); } }}int n, ans;int main(){ n=read
(); getphi(n); if(n==1) return printf("0\n")&0; for(RG int i=3;i<=n;i++) ans+=phi[i-1]; printf("%d\n", (ans<<1)+3); return 0;}

转载于:https://www.cnblogs.com/cj-xxz/p/10185834.html

你可能感兴趣的文章
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>
Java 实践:生产者与消费者
查看>>
[转]IOCP--Socket IO模型终结篇
查看>>
(五)归一化
查看>>
使用信号量
查看>>
实验八 接口与实现接口的类
查看>>
PostgreSQL 保留关键字添加方法之一,不带参数的函数
查看>>
赛前热手 (天梯赛暴力题)
查看>>
【转贴】SAP HANA内存数据库详解
查看>>
两种应该掌握的排序方法--------1.shell Sort
查看>>
vuejs动态组件给子组件传递数据
查看>>
杭电2065(递推)红色病毒
查看>>
js 获取视频的第一帧
查看>>
各种正则验证
查看>>
观察者模式(Observer)
查看>>