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

Grodno 2015 (Urozero May 2015 Day 5) D Triangles的更多相关文章

  1. Grodno 2015 (Urozero May 2015 Day 5)

    A. Palindromes 留坑. B. Modules 将$a$排序,那么最优解中$a_n$一定放在前后一个,且前面$n-1$个每次要么放最小的,要么放最大的,区间DP即可. #include&l ...

  2. 2015.12.29~2015.12.30真题回顾!-- HTML5学堂

    2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...

  3. 2015.12.21~2015.12.24真题回顾!-- HTML5学堂

    2015.12.21~2015.12.24真题回顾!-- HTML5学堂 山不在高,有仙则名!水不在深,有龙则灵!千里冰封,非一日之寒!IT之路,须厚积薄发!一日一小练,功成不是梦!小小技巧,尽在HT ...

  4. Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载

    微软刚刚宣布了 Visual Studio 2015和.Net 2015 预览版,并同时提供了下载. 微软在纽约正进行中的#Connect# 全球开发者在线大会上宣布了Visual Studio 20 ...

  5. NCPC 2015 October 10, 2015 Problem D

    NCPC 2015Problem DDisastrous DowntimeProblem ID: downtimeClaus Rebler, cc-by-saYou’re investigating ...

  6. Week 1:2015/4/27~2015/5/3

    Update everyday.(Last edit:4/30 01:00) Task 1:TPO X 2.5(finish 1,then finish 2 more) Task 2:TC Tarja ...

  7. [3 Jun 2015 ~ 9 Jun 2015] Deep Learning in arxiv

    arXiv is an e-print service in the fields of physics, mathematics, computer science, quantitative bi ...

  8. Adobe Photoshop CC 2015(PS CC 2015)看图不说话

  9. stand up meeting 12/25/2015 & weekend 12/26/2015~12/27/2015

    part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云  在pdf阅读页面添加生词本显示:UI美化     6 完善显示 ...

随机推荐

  1. C#秘密武器之特性

    一.概述 Attribute说白了就是一个类而已,里边一般含有一些附加信息,或者一些特殊的处理逻辑,以便告诉编译器应用该特性的东东是个奇葩,需要特殊对待! 二.使用时的注意事项 2.1. Attrib ...

  2. Unity3D Gamecenter 得分上传失败的处理

    Unity3DGamecenter 得分上传失败的处理. 常常会有种情况是,玩家在地铁或者飞机上没法通过wifi或者3G连接到服务器,从而会导致上传分数失败 解决方法: 这时候需要把得分存在Playe ...

  3. 单元测试JUnit 4(二)——keeps the bar green to keeps the code clean

    1.Failure和Error Failure是指测试失败  Error是指测试程序本身出错  (int a=10/0) 2.JUnit常用注解 2.1 @RunWith: 可以更改测试运行器(继承o ...

  4. Ansible远程执行脚本示例

    首先创建一个shell脚本 cat /tmp/df.sh #!/bin/bash df -h|grep vda|awk '{print $5}' 然后把该脚本分发到各个机器上 ansible comp ...

  5. .Net程序员面试 中级篇 (回答Scott Hanselman的问题)

    继<.Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)>跟<.Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)>之 ...

  6. IIS6.0应用程序池回收(转载)

    这段时间公司的程序经常出现问题,然后整个应用程序就不能访问了,我们的服务器版本:window 2003 SP1,IIS6.0,没有安装Microsoft Visual Studio .NET . 问题 ...

  7. unity Editor下自启动

    [InitializeOnLoad] 加上这个特性,并且在静态构造函数里写上内容.即可在Unity启动的时候自启动这个Editor脚本

  8. lantin1

    Latin1是ISO-8859-1的别名,有些环境下写作Latin-1. ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCI ...

  9. 将json形式的时间字符串转换成正常的形式

    //重写time的getter方法 //判断addtime和当期的时间差 // < 60分钟  返回 n分钟前 // > 60分钟  返回 n小时前 //超过24小时  返回 -月-日 - ...

  10. NetBeans 设置code completion/auto pop-up delay

    如果你在Tools>Options>Editor>Code Completion>Language: Java 没有找到设置delay的选项.那就去C盘(如果你用的是Windo ...