欧拉函数的应用

原题:

作为体育委员,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】仪仗队相关推荐

  1. 【SDOI2008】仪仗队

    题面 题解 当$(x,y)$能被看到时,$gcd(x,y)=1$, 所以可以求$\sum_{i=0}^n\sum_{j=0}^n[gcd(x,y)=1]$ 或者用欧拉函数 代码 #include< ...

  2. 思路与好题记录与小技巧

    记录好题,值得看看或再做一遍: p1306  SDOI2008,P1377仪仗队 BZOJ1067降雨量 想看的东西: https://ruanx.pw/post/%E7%89%9B%E9%A1%BF ...

  3. python 查找文件内容性能 grep_使用grep查找文件中指定字符出现的次数

    关于IOS浏览器:document,body的click事件触发规则 今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在I ...

  4. BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )

    假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...

  5. BZOJ 2190: [SDOI2008]仪仗队

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2689  Solved: 1713 [Submit][Sta ...

  6. bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB [Submit][Status][Discuss] Description 作 ...

  7. bzoj2190 [SDOI2008]仪仗队(欧拉函数)

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 3203  Solved: 2062 [Submit][Sta ...

  8. 「BZOJ2190」[SDOI2008] 仪仗队 - 欧拉函数

    ->点我进原题 [SDOI2008] 仪仗队 时空限制 1000ms / 128MB Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵, ...

  9. 「欧拉定理」[SDOI2008]仪仗队

    [SDOI2008]仪仗队 https://ac.nowcoder.com/acm/problem/20313 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练. 仪仗队是由学生组成的N * N ...

最新文章

  1. Survey | 多任务学习综述
  2. input中v-model和value不能同时调用时解决方案
  3. java基础面向对象_Java基础面向对象
  4. 【转】Hadoop集群添加磁盘步骤
  5. KMP算法的动态规划解说
  6. 小心pthread_cond_signal和SetEvent之间的差异
  7. Hive-Based Registry使用
  8. python中dic_python之dic {字典}(重要指数*****)
  9. win7连接sftp_SFTP远程连接服务器上传下载文件-vs2010项目实例
  10. 3-17Pytorch与线性代数运算
  11. 基于java WebDriver +TestNG 框架环境设置
  12. 测试局域网路的MTU最大值
  13. 优先部署EDI系统把握信息传输的主动权
  14. python抓取qq群消息,python 爬取qq群员信息
  15. 深度学习 机器学习 数据集资源汇总
  16. 阮一峰ES6入门读书笔记(十五):Class
  17. 【历史上的今天】3 月 1 日:个人计算机鼻祖问世;天涯社区上线;Shell 排序算法作者诞生
  18. table 表格边框线去重
  19. 奥运门票系统down机的技术问题
  20. rono在oracle的作用_sqlnet.ora的作用

热门文章

  1. 计算机基础知识_计算机基础知识汇总
  2. matlab动态图最新存储文件,MATLAB 动图绘制、保存
  3. 总结nodejs的优缺点
  4. 单片机项目开发一般步骤
  5. NVM区数据备份机制
  6. 网页中怎样制作虚线表格
  7. 只使用Feign不引入Eureka
  8. 蔚来2018年平均每天亏掉2641万,车辆交付预期环比腰斩
  9. 李彦宏:想活150得靠AI,雷军:下代旗舰机更AI | 大佬乌镇论道
  10. 寒假作业3:抓老鼠啊~亏了还是赚了?