Openjudge/Poj 1183 反正切函数的应用
1.链接地址:
http://bailian.openjudge.cn/practice/1183
http://poj.org/problem?id=1183
2.题目:
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 反正切函数可展开成无穷级数,有如下公式
(其中0 <= x <= 1) 公式(1)
使用反正切函数计算PI是一种常用的方法。例如,最简单的计算PI的方法:
PI=4arctan(1)=4(1-1/3+1/5-1/7+1/9-1/11+...) 公式(2)
然而,这种方法的效率很低,但我们可以根据角度和的正切函数公式:
tan(a+b)=[tan(a)+tan(b)]/[1-tan(a)*tan(b)] 公式(3)
通过简单的变换得到:
arctan(p)+arctan(q)=arctan[(p+q)/(1-pq)] 公式(4)
利用这个公式,令p=1/2,q=1/3,则(p+q)/(1-pq)=1,有
arctan(1/2)+arctan(1/3)=arctan[(1/2+1/3)/(1-1/2*1/3)]=arctan(1)
使用1/2和1/3的反正切来计算arctan(1),速度就快多了。
我们将公式(4)写成如下形式arctan(1/a)=arctan(1/b)+arctan(1/c)
其中a,b和c均为正整数。
我们的问题是:对于每一个给定的a(1 <= a <= 60000),求b+c的值。我们保证对于任意的a都存在整数解。如果有多个解,要求你给出b+c最小的解。
- 输入
- 输入文件中只有一个正整数a,其中 1 <= a <= 60000。
- 输出
- 输出文件中只有一个整数,为 b+c 的值。
- 样例输入
1- 样例输出
5- 来源
- Noi 01
3.思路:
数学题,暴力枚举会超时
思路参考http://hi.baidu.com/sjzezoi/item/f563a11c6accf0dd65eabff8
题目要求求出
1 / a = (1 / b+1 / c) / (1 - 1 / (b * c) )
==> ab + ac = bc - 1
令b=a+m, c=a+n
==> mn=a^2+1
所以m或n必然小于a,且为正整数
所以可以直接枚举m的值了,注意计算a*a可能爆longint
4.代码:
#include <iostream>
#include <cstdio> using namespace std; int main()
{
long long a;
cin>>a; long long m;
for(m = a; m > ; --m)
{
if((a * a + ) % m == ) break;
}
cout<<(a * + m + (a * a + ) / m)<<endl; return ;
}
Openjudge/Poj 1183 反正切函数的应用的更多相关文章
- POJ 1183 反正切函数的应用(数学代换,基本不等式)
题目链接:http://poj.org/problem?id=1183 这道题关键在于数学式子的推导,由题目有1/a=(1/b+1/c)/(1-1/(b*c))---------->a=(b*c ...
- POJ 1183 反正切函数的应用
H - 反正切函数的应用 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit ...
- OpenJudge / Poj 2141 Message Decowding
1.链接地址: http://poj.org/problem?id=2141 http://bailian.openjudge.cn/practice/2141/ 2.题目: Message Deco ...
- OpenJudge/Poj 2105 IP Address
1.链接地址: http://poj.org/problem?id=2105 http://bailian.openjudge.cn/practice/2105 2.题目: IP Address Ti ...
- OpenJudge/Poj 2027 No Brainer
1.链接地址: http://bailian.openjudge.cn/practice/2027 http://poj.org/problem?id=2027 2.题目: 总Time Limit: ...
- OpenJudge/Poj 2013 Symmetric Order
1.链接地址: http://bailian.openjudge.cn/practice/2013 http://poj.org/problem?id=2013 2.题目: Symmetric Ord ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- OpenJudge/Poj 2001 Shortest Prefixes
1.链接地址: http://bailian.openjudge.cn/practice/2001 http://poj.org/problem?id=2001 2.题目: Shortest Pref ...
- OpenJudge/Poj 2000 Gold Coins
1.链接地址: http://bailian.openjudge.cn/practice/2000 http://poj.org/problem?id=2000 2.题目: 总Time Limit: ...
随机推荐
- view 与layer
文章出处:http://blog.csdn.net/iukey 一.添加 Quartz Core 框架 要使用 Quartz Core 框架,你需要将其添加到你的工程中 . 然后 #import ...
- Mac窗口管理管理软件SizeUp
一.SizeUp 是一款 Mac窗口管理管理软件.借助SizeUp,可以快速变化窗口大小(最大化.最小化),可以快速切换窗口的不同位置. 尤其在双显示器,更是扮演者方便.高效.好用的角色,提供了快速切 ...
- Chord算法(原理)
Chrod算法是P2P中的四大算法之中的一个,是有MIT(麻省理工学院)于2001年提出,其它三大算法各自是: CAN Pastry Tapestry Chord的目的是提供一种能在P2P网络高速定位 ...
- Hooks——钩子概览
(资料源于MSDN,本文仅对其进行翻译.批注.其链接为:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959%28v=vs. ...
- cocos2d_x_08_游戏_FlappyBird
终于效果图: 环境版本号:cocos2d-x-3.3beta0 使用内置的物理引擎 计时器没有加入,可參考[cocos2d_x_06_游戏_一个都不能死] 主场景 // // FlappyBirdSc ...
- android133 360 06 一键锁频,清楚数据
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- Git链接到自己的Github(2)进阶使用
接着上一篇的,从github clone下代码. 1.先查看当前开发分支 $ cat .git/HEAD ref: refs/heads/master 这里的master是默认分支. 2.查看当前状态 ...
- Java读取文本文件中文乱码问题 .转载
最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...
- 解读eXtremeComponents代码结构--转载
原文地址:http://blog.csdn.net/lark3/article/details/1937466 大致整理了去年写的东西,罗列如下: ec是一系列提供高级显示的开源JSP定制标签,当前的 ...
- 2、netlink简介
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink ...
(其中0 <= x <= 1) 公式(1)