【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)和左下角的水平距离
代码:
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 ...
最新文章
- 《深入理解java虚拟机》
- C#中获取当前应用程序的路径及环境变量
- 9. 混合模型和EM(1)
- Hibernate Tomcat JNDI数据源配置(转)
- java console press any key_请问在JAVA中怎么实现在控制台下press any key to continue的功能?...
- Angular应用里使用rxjs提供的观察者和发布者实现事件处理
- Java 7 –反编译项目硬币
- 前端学习(3254):react中todolist制作静态组件
- SharePoint学习札记[3] — Office SharePoint Server 2007部署
- android 版本更新工具类_报表分析工具FastReport .Net 2021年超大版本更新,实现了对.NET 5的支持...
- C 关于链表的一些操作
- linux kernel基本构成的内容有下列哪些项_Linux下逻辑地址-线性地址-物理地址详解...
- MSIL实用指南-struct的生成和操作
- nuke 11 for mac(视频后期合成软件)破解教程
- idea自定义banner
- 说话人性别识别——语音检测初探
- Untiy学习 简单的脚本方法
- Android notes
- Fidder 请求信息颜色的含义
- 土方工程量计算表格excel_土石方计算电子表格
热门文章
- java多态是怎样产生的,java 多态产生的疑问
- 服务启动失败_将控制台程序转换为服务运行
- 20200315:检查替换后的词是否有效(leetcode1003)
- php反序列化java.long_细数java中Long与Integer比较容易犯的错误总结
- idea引入本地jar包及打包
- 笔记本启动关闭小键盘NUM LOCK的N种方法
- 第5章 set命令详解
- 智能一代云平台(三十六):项目中如何做到避免传递依赖
- “跨国视频造假窝点”曝光!这个大规模数据集,帮AI揪出99%换脸视频
- 那个马斯克的小迷弟开始讲深度学习了,课程视频+PPT已放出