给出$P(<=10^9)$, 求有多少个有序三元组$(a, b, c),\ gcd(a, b, c) = 1,\ a + b + c <= P$且以它们构成的三角形中存在某个角是另外一个角的两倍。
题解:
不妨设$a,b,c$所对的角分别是$A,B,C$且$C = 2*A$.
根据正弦定理
$$\frac{a}{\sin A} = \frac{b}{\sin B} = \frac{c}{\sin C}$$
$$\frac{a}{\sin A} = \frac{b}{\sin (\pi-3A)} = \frac{c}{\sin 2A}$$
$$\frac{a}{\sin A} = \frac{b}{\sin 3A} = \frac{c}{\sin 2A}$$
$$\frac{a}{\sin A} = \frac{b}{3 \sin A - 4\sin^3 A} = \frac{c}{2\sin A \cos A}$$
$$a = \frac{b}{3 - 4\sin^2 A} = \frac{c}{2 \cos A}$$ $$a = \frac{b}{4\cos^2 A - 1} = \frac{c}{2 \cos A}$$
可以得到$\cos A = \frac{c}{2a}$ 代入$\frac{b}{4\cos^2 A - 1}$得$a*(a+b)=c^2$
上面的推导是充要的。
易得$gcd(a, b) = 1, 否则gcd(a, b, c) \ne 1$, 所以还有$gcd(a, a + b) = 1$。
因此$a$和$a+b$都是完全平方数。不妨设$a = u^2$, $a + b = v^2$.
还要满足构成三角形的条件 :
$$a+b>c \Rightarrow v^2 > uv \ \ 显然成立$$
$$a+c>b \Rightarrow u^2+uv>v^2-u^2 \Rightarrow 2u^2+uv-v^2>0 \Rightarrow u > \frac{v}{2}$$
$$a+b+c <= P \Rightarrow v^2+uv<=P \Rightarrow u <= \frac{P-v^2}{u}$$
所以得出做法: 枚举v,则有$u>\frac{v}{2}+1 , u < v , u <= \frac{P-v^2}{u}$ 且$gcd(u, v) = 1$.
根据$v$的质因子容斥一下求出所有合法的u个数即可。

最新文章

  1. AEAI ESB培训大纲
  2. 关于a标签点击会出现的背景色的问题
  3. Sql Server中不常用的表运算符之APPLY(2)
  4. OAuth2 通用组件源码下载(支持新浪微博、QQ、淘宝)(转载)
  5. Java Swing事件处理机制
  6. mina 字节数组编解码器的写法 II
  7. Java API —— BigInteger类
  8. 初探 MySQL 的 Binlog
  9. git命令(流程)
  10. 数据转换错误,java.lang.NumberFormatException: null
  11. web容器 - Jetty
  12. Perl资料
  13. Fix a Tree
  14. html 获取宽高
  15. Android 进程间通信
  16. 【k短路&amp;A*算法】BZOJ1975: [Sdoi2010]魔法猪学院
  17. 利用Python实现对Web服务器的目录探测
  18. Android hook神器frida(二)
  19. 第一周学习总结-Java
  20. MySQL 批量添加

热门文章

  1. kubernetes 环境搭建
  2. U3D实现与iOS交互
  3. 算法笔记_089:蓝桥杯练习 7-2求arccos值(Java)
  4. Java学习笔记3、变量、数据类型
  5. Oracle查询及删除重复数据
  6. canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线
  7. ip地址库选择
  8. angularJS 第一天 使用模型与控制器绑定数据
  9. Mongodb - TTL(time to live)特性
  10. 纯div+css制作的弹出菜单