Grodno 2015 (Urozero May 2015 Day 5) D Triangles

给出$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个数即可。

转载于:https://www.cnblogs.com/vb4896/p/9471206.html

内容概要:本文深入剖析了一个全开源淘客系统的实现细节,涵盖了多个关键技术点。首先介绍了用Go语言重构的淘宝联盟API网关,展示了商品搜索接口的核心代码,强调了参数签名、HTTP请求处理以及数据转换的重要性。接着讨论了数据库设计,特别是佣金结算表的结构,突出了JSON类型的使用和乐观锁机制的应用。前端方面,展示了基于Vue.js的佣金日历组件,体现了数据驱动UI和事件冒泡处理的设计理念。部署环节则分享了一些实用技巧,如手动更新淘宝API的SSL证书链。此外,还探讨了PHP实现的订单同步服务、SDK封装、热更新通道等特性,以及系统的技术售后支持措施。最后,文章总结了该系统的优点,如清晰的MVC分层结构、灵活的分佣规则设计、完善的部署方案和技术售后支持。 适合人群:对淘客系统开发感兴趣的开发者,尤其是希望深入了解系统架构设计、前后端开发、数据库设计和部署优化的技术人员。 使用场景及目标:适用于想要搭建或改进淘客系统的团队和个人开发者。目标是帮助读者理解淘客系统的各个组成部分及其工作原理,从而能够快速上手并进行二次开发。 其他说明:文中提供了大量实际代码片段和配置示例,便于读者理解和实践。同时,作者还分享了许多实用的经验和技巧,有助于提高开发效率和系统稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值