博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2190: [SDOI2008]仪仗队(欧拉)
阅读量:4327 次
发布时间:2019-06-06

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

2190: [SDOI2008]仪仗队

题目:

题解:

   跟着企鹅大佬做题!

   自己瞎搞搞就OK,不难发现,如果以C作为原点建立平面直角坐标系,那么在这个坐标系中,坐标为(x,y)且GCD(x,y)==1的点肯定看不见

   其实就相当于要求两点之间连线的斜率唯一。。。也就是1-n-1的不同的互质点对

   那就可以用欧拉来做,直接求1-n-1的phi值(因为x或y最多达到n-1)

   不过最后要输出phi[n-1]*2+3,因为phi只求出一边,而坐标系是对称的,+3则是因为一开始左下角的三条边欧拉不会求(因为欧拉从2开始啊

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 int phi[41000];//x,y均小于等于n的不同的互质数对的个数 8 int n; 9 void get_phi()10 {11 for(int i=2;i<=n;i++)phi[i]=i;12 for(int i=2;i<=n;i++)13 {14 if(phi[i]==i)15 for(int j=i;j<=n;j+=i)16 phi[j]-=phi[j]/i;17 phi[i]+=phi[i-1];18 }19 }20 int main()21 {22 scanf("%d",&n);n--;23 get_phi();printf("%d\n",phi[n]*2+3);24 return 0;25 }

转载于:https://www.cnblogs.com/CHerish_OI/p/8522008.html

你可能感兴趣的文章
linux工作调度(计划任务)
查看>>
hdu--1698 Just a Hook(线段树+区间更新+懒惰标记)
查看>>
SynchronousQueue
查看>>
Python学习笔记-EXCEL操作
查看>>
依照特定轨迹遍历字符串图
查看>>
Mantis 1.1.0 报告问题中设置必填项或取消必填项[Z]
查看>>
爬虫添加代理
查看>>
POJ 题目1204 Word Puzzles(AC自己主动机,多个方向查询)
查看>>
oracle经常使用函数(2)
查看>>
Iocomp控件之数字显示【图文】
查看>>
Androd开发之广告栏设计
查看>>
jquery.fly.min.js 拋物插件
查看>>
mini2440系统引导(五)串口UART
查看>>
JDK5.0新特性系列---9.注释功能Annotation
查看>>
普通平衡树(指针splay)
查看>>
【HEOI 2018】Day2 T2 林克卡特树
查看>>
vue-cli中配置sass的方法
查看>>
使用CSS3 @font-face【实现个性化字体 】
查看>>
codereview tool
查看>>
input type=file 标签禁止让用户手动输入
查看>>