HDU 3903 Trigonometric Function (三角恒等式&余弦定理)
2014-03-09 12:13
417 查看
http://acm.hdu.edu.cn/showproblem.php?pid=3903
如何判断
的有理性?
由这三个式子:
问题可化归为判断A,B,C的正弦和余弦是否为有理数,又由余弦定理
以及
cos(arccos x)=x
若x=p/q,则sqrt(1-x^2)=sqrt(q^2-p^2)/q
故只需判断q^2-p^2是否为完全平方数即可。
完整代码:
如何判断
的有理性?
由这三个式子:
问题可化归为判断A,B,C的正弦和余弦是否为有理数,又由余弦定理
以及
cos(arccos x)=x
若x=p/q,则sqrt(1-x^2)=sqrt(q^2-p^2)/q
故只需判断q^2-p^2是否为完全平方数即可。
完整代码:
/*281ms,356KB*/ #include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int icase; scanf("%d", &icase); __int64 a, b, c, n, m, k; while (icase--) { cin >> a >> b >> c >> n >> m >> k; __int64 d = 4 * b * b * c * c - (b * b + c * c - a * a) * (b * b + c * c - a * a); __int64 e = 4 * b * b * a * a - (a * a + b * b - c * c) * (a * a + b * b - c * c); __int64 f = 4 * a * a * c * c - (a * a + c * c - b * b) * (a * a + c * c - b * b); __int64 x, y, z; x = sqrt(d); y = sqrt(e); z = sqrt(f); if (x * x == d && y * y == e && z * z == f) puts("YES"); else puts("NO"); } }
相关文章推荐
- Hdu 1829 A Bug's Life && Poj 1182 食物链 (并查集偏移量的应用)
- [HDU 5349] MZL's simple problem 神题
- HDU:2604 Queuing(发现似乎所有…
- hdu1160 FatMouse's Speed--DP&记录路径
- HDU 1242 Rescue
- POJ 1177 & HDU 1828 Picture(扫描线 + 求周长)
- poj1961 & hdu 1358 Period(KMP)
- HDU 1009 FatMouse' Trade
- HDU 1081 & POJ 1050 To The Max (最大子矩阵和)
- HDU 1704 Rank (关系闭包)
- BestCoder Round 69 Div 2 1001&& 1002 || HDU 5610 && 5611
- HDU 2855 Fibonacci Check-up(数…
- HDU 4365 正方形格子涂色中心对称轴对称的涂法有多少种-思维-(矩阵坐标关系&快速幂取模)
- hdu 1038 Biker's Trip Odometer(水题)
- HDU How many prime numbers
- hdu 4578 Transformation【线段树区间&思维】
- 堆排序 hdu 2020 绝对值排序
- hdu 1005
- POJ1607 & HDU 1330 & ZOJ 1216 Deck(数学题)
- hdu 2112