【SDOI2008】【P1377】仪仗队
欧拉函数的应用
原题:
作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。 现在,C君希望你告诉他队伍整齐时能看到的学生人数。
1<=N<=40000
首先可以把图沿着左下角到右上角内条对角线对折一下,两边是一样的所以只要求出其中一边*2+1即可(因为对角线还有一个,所以+1)
每一边怎么求呐
可以发现所有能看到的点都满足gcd(x,y)==1
然后就是求1<=x<=n-1的phi的和了
为什么呐
首先y一定要比x小,否则就跑到另一边去了(上面对折了↑),然后gcd(x,y)还要==1,就是比x小且与x互质的数的个数,也是欧拉函数的定义,所以直接求phi的和即可
这里需要注意,左下角的坐标要设成0(这也是上面求的是1<=x<=n-1的phi的和↑的原因),因为这样才能保证x-左下角的值是(x,y)和左下角的水平距离
代码:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 int n; 8 int kang[41000],phi[41000],zhi[410000],ztop=0; 9 void shai(){ 10 memset(kang,0,sizeof(kang)); 11 phi[1]=1; 12 for(int i=2;i<=n;i++){ 13 if(!kang[i]){ phi[i]=i-1; zhi[++ztop]=i;} 14 for(int j=1;j<=ztop && i*zhi[j]<=n;j++){ 15 kang[i*zhi[j]]=true; 16 if(i%zhi[j]==0){ phi[i*zhi[j]]=phi[i]*zhi[j]; break;} 17 phi[i*zhi[j]]=phi[i]*phi[zhi[j]]; 18 } 19 } 20 } 21 int main(){//freopen("ddd.in","r",stdin); 22 cin>>n; 23 shai(); 24 long long bowl=0; 25 for(int i=1;i<n;i++) bowl+=phi[i]; 26 cout<<bowl*2+1<<endl; 27 return 0; 28 }
View Code
转载于:https://www.cnblogs.com/JSL2018/p/5862900.html
【SDOI2008】【P1377】仪仗队相关推荐
- 【SDOI2008】仪仗队
题面 题解 当$(x,y)$能被看到时,$gcd(x,y)=1$, 所以可以求$\sum_{i=0}^n\sum_{j=0}^n[gcd(x,y)=1]$ 或者用欧拉函数 代码 #include< ...
- 思路与好题记录与小技巧
记录好题,值得看看或再做一遍: p1306 SDOI2008,P1377仪仗队 BZOJ1067降雨量 想看的东西: https://ruanx.pw/post/%E7%89%9B%E9%A1%BF ...
- python 查找文件内容性能 grep_使用grep查找文件中指定字符出现的次数
关于IOS浏览器:document,body的click事件触发规则 今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在I ...
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...
- BZOJ 2190: [SDOI2008]仪仗队
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2689 Solved: 1713 [Submit][Sta ...
- bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB [Submit][Status][Discuss] Description 作 ...
- bzoj2190 [SDOI2008]仪仗队(欧拉函数)
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 3203 Solved: 2062 [Submit][Sta ...
- 「BZOJ2190」[SDOI2008] 仪仗队 - 欧拉函数
->点我进原题 [SDOI2008] 仪仗队 时空限制 1000ms / 128MB Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵, ...
- 「欧拉定理」[SDOI2008]仪仗队
[SDOI2008]仪仗队 https://ac.nowcoder.com/acm/problem/20313 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练. 仪仗队是由学生组成的N * N ...
最新文章
- Survey | 多任务学习综述
- input中v-model和value不能同时调用时解决方案
- java基础面向对象_Java基础面向对象
- 【转】Hadoop集群添加磁盘步骤
- KMP算法的动态规划解说
- 小心pthread_cond_signal和SetEvent之间的差异
- Hive-Based Registry使用
- python中dic_python之dic {字典}(重要指数*****)
- win7连接sftp_SFTP远程连接服务器上传下载文件-vs2010项目实例
- 3-17Pytorch与线性代数运算
- 基于java WebDriver +TestNG 框架环境设置
- 测试局域网路的MTU最大值
- 优先部署EDI系统把握信息传输的主动权
- python抓取qq群消息,python 爬取qq群员信息
- 深度学习 机器学习 数据集资源汇总
- 阮一峰ES6入门读书笔记(十五):Class
- 【历史上的今天】3 月 1 日:个人计算机鼻祖问世;天涯社区上线;Shell 排序算法作者诞生
- table 表格边框线去重
- 奥运门票系统down机的技术问题
- rono在oracle的作用_sqlnet.ora的作用