[BZOJ2190][SDOI2008]仪仗队(欧拉函数|莫比乌斯反演)
来源:互联网 发布:f1 2015知乎 编辑:程序博客网 时间:2024/06/15 07:04
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2190
题解:点(x,y)如果gcd(x,y)=1才能被看到
我们把c点看做(0,0),那么我们分离出一个(n−1)∗(n−1)的矩阵,这个矩阵上能看到的点是对称的,所以我们分离出他的上三角形部分,他的第i行(2<=i<=n−1)能被看到的点有φ(i)个
所以ans=∑i=2n−1φ(i)+3,另3个点分别是(1,1),(1,0),(0,1)
另见:http://blog.csdn.net/mosquito_zm/article/details/77102038
代码如下:
#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 11;const int maxp = 1e4 + 10;int primes[maxp],pcnt;int phi[maxn];long long sum[maxn];void get_phi_and_primes(int n){for(int i = 1;i <= n;i++) phi[i] = 0;phi[1] = 1;for(int i = 2;i <= n;i++){if(!phi[i]) {primes[++pcnt] = i;phi[i] = i - 1;}for(int j = 1;j <= pcnt && primes[j] * i <= n;j++){int t = primes[j];if(i % primes[j] == 0){phi[i * t] = phi[i] * t;break;}else phi[i * t] = phi[i] * (t - 1);}}}void getsum(int n){sum[0] = 0;for(int i = 1;i <= n;i++) sum[i] = sum[i - 1] + phi[i];}int main(){get_phi_and_primes(maxn - 10);getsum(maxn - 10);long long n;scanf("%lld",&n);long long ans = 0;ans = sum[n - 1] * 2 + 1;printf("%lld",ans);return 0;}
阅读全文
0 0
- [BZOJ2190][SDOI2008]仪仗队(欧拉函数|莫比乌斯反演)
- bzoj2190: [SDOI2008]仪仗队 莫比乌斯反演
- bzoj2190: [SDOI2008]仪仗队(欧拉函数)
- 【bzoj2190】【sdoi2008】【仪仗队】【欧拉函数】
- Bzoj2190:[SDOI2008]仪仗队:欧拉函数
- [BZOJ2190] [SDOI2008] 仪仗队 - 欧拉函数
- BZOJ2190【莫比乌斯反演】【欧拉函数】
- 【BZOJ2190】仪仗队(欧拉函数)
- [SDOI2008]仪仗队 欧拉函数
- 【bzoj2190】【SDOI2008】仪仗队(数论)
- 【bzoj2190】【SDOI2008】仪仗队(数论)
- bzoj2190 仪仗队【欧拉函数+线性筛】
- 【bzoj2190】[SDOI2008]仪仗队 线性筛欧拉函数
- BZOJ 2190 仪仗队 (莫比乌斯反演)
- BZOJ-2190-仪仗队-SDOI2008-欧拉函数
- BZoj 2190: [SDOI2008]仪仗队【欧拉函数】
- bzoj 2190: [SDOI2008]仪仗队 欧拉函数
- 【bzoj 2190】[SDOI2008]仪仗队 欧拉函数
- 动态规划
- 二叉树问题---二叉树节点间的最大距离
- h5中视频插入标签 video
- unity 协程笔记
- Standby RAC遭遇ORA-1157,1111,1110导致实例crash处理
- [BZOJ2190][SDOI2008]仪仗队(欧拉函数|莫比乌斯反演)
- 2017.8.11 Oracle Linux安装问题补充
- (二)Supporting Different Devices支持不同的设备
- SSH Secure Shell Client使用
- 忍者跑酷
- cobbler无人值守批量安装Linux系统
- ORB_SLAM2之RGBD测试
- CSharpGL(44)用ShadowMapping方式画物体的影子
- POJ2387-Til the Cows Come Home