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 反正切函数的应用的更多相关文章

  1. POJ 1183 反正切函数的应用(数学代换,基本不等式)

    题目链接:http://poj.org/problem?id=1183 这道题关键在于数学式子的推导,由题目有1/a=(1/b+1/c)/(1-1/(b*c))---------->a=(b*c ...

  2. POJ 1183 反正切函数的应用

    H - 反正切函数的应用 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit ...

  3. OpenJudge / Poj 2141 Message Decowding

    1.链接地址: http://poj.org/problem?id=2141 http://bailian.openjudge.cn/practice/2141/ 2.题目: Message Deco ...

  4. OpenJudge/Poj 2105 IP Address

    1.链接地址: http://poj.org/problem?id=2105 http://bailian.openjudge.cn/practice/2105 2.题目: IP Address Ti ...

  5. OpenJudge/Poj 2027 No Brainer

    1.链接地址: http://bailian.openjudge.cn/practice/2027 http://poj.org/problem?id=2027 2.题目: 总Time Limit: ...

  6. OpenJudge/Poj 2013 Symmetric Order

    1.链接地址: http://bailian.openjudge.cn/practice/2013 http://poj.org/problem?id=2013 2.题目: Symmetric Ord ...

  7. OpenJudge/Poj 1088 滑雪

    1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...

  8. OpenJudge/Poj 2001 Shortest Prefixes

    1.链接地址: http://bailian.openjudge.cn/practice/2001 http://poj.org/problem?id=2001 2.题目: Shortest Pref ...

  9. OpenJudge/Poj 2000 Gold Coins

    1.链接地址: http://bailian.openjudge.cn/practice/2000 http://poj.org/problem?id=2000 2.题目: 总Time Limit: ...

随机推荐

  1. Android最新锁屏病毒分析及解锁

    一.情况简介   从去年开始PC端的敲诈者类病毒在不断的爆发,今年年初的时候手机上也开始出现了敲诈者之类的病毒,对这类病毒很无语也是趋势,因为很多时候病毒的产生是和金钱利益相关的.前天去吾爱破解论坛病 ...

  2. ThindPad x230 无法U盘启动

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  3. 对PostgreSQL的prepared statement的深入理解

    看官方文档: http://www.postgresql.org/docs/current/static/sql-prepare.html PREPARE creates a prepared sta ...

  4. android常见错误-The container 'Android Dependencies' references non existing library

    The container 'Android Dependencies' references non existing library

  5. curl常用的5个例子(转)

    我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等.但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者 ...

  6. HttpClient 4.3.* 上传带中文文件名文件文件名乱码问题的解决

    又是折腾了一天才解决的问题,网上关于这个问题的资料不多,希望写出来能帮到有需要的人. 之前无论怎么设置charset都不起作用, 后来看了这篇文章 才发现MultipartEntityBuilder有 ...

  7. careercup-中等难度 17.4

    17.4 编写一个方法,找出两个数字中最大的那一个.不得使用if-else或其他比较运算符. 解法: 我们可以通过一步步的分析来将需要用到的if-else和比较操作符去掉: If a > b, ...

  8. careercup-C和C++ 13.9

    13.9 编写支持对齐分配的malloc和free函数,分配内存时,malloc函数返回的地址必须都能被2的n次方整除. 解法: 一般来说,使用malloc,我们控制不了分配的内存会在堆里哪个位置.我 ...

  9. eclipse+ADT 进行android应用签名详解

    http://jojol-zhou.iteye.com/blog/719428 1.Eclipse工程中右键工程,弹出选项中选择 android工具-生成签名应用包: 2.选择需要打包的android ...

  10. php动态调用方法_sux

    <form  action=""> <input type="hidden" name="mod" id="mo ...