博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1183 反正切函数的应用
阅读量:5117 次
发布时间:2019-06-13

本文共 1182 字,大约阅读时间需要 3 分钟。

Language:Default
反正切函数的应用
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 12424   Accepted: 4490

Description

反正切函数可展开成无穷级数,有如下公式 
(其中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最小的解。 

Input

输入文件中只有一个正整数a,其中 1 <= a <= 60000。

Output

输出文件中只有一个整数,为 b+c 的值。

Sample Input

1

Sample Output

5

Source

/*不想说什么了...非常坑爹看了discuss才知道要int64才不WA 才知道暴力循环会TLE其实说了一大堆就是要算a^2+1 == (a+m)(a+n)最后得出a^2+1 = m*n   m和n从离sqrt(a*a+1)最近的点开始算能被a^2+1整除就bingo*/#include
#include
int main(){ __int64 a,i; scanf("%I64d",&a); for(i = a+1 ; i >= 1 ; i--) { if((a*a+1)%i == 0) { printf("%I64d\n",a+a+i+(a*a+1)/i); break; } } return 0;}

转载于:https://www.cnblogs.com/Felix-F/archive/2012/03/28/3223687.html

你可能感兴趣的文章
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
万能的SQLHelper帮助类
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
Html5 离线页面缓存
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Android打包key密码丢失找回
查看>>
VC6.0调试技巧(一)(转)
查看>>