OpenJudge百炼-1183-反正切函数的应用-C语言-简单计算
描述:
反正切函数可展开成无穷级数,有如下公式
(其中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
/******************************************************
**文件名:百炼-1183
**Copyright (c) 2015-2025 OrdinaryCrazy
**创建人:OrdinaryCrazy
**日期:20170817
**描述:百炼1183参考答案
**版本:1.0
*******************************************************/
/*************************************
直接将条件转化为a*b + 1 = (b - a)*c好像还是不好下手
直接枚举b,c是肯定不行的,而且重点是,不知道要枚举到多少合适
转化一下问题,假设b = a + m,c = a + n;
条件就转化为a*a + 1 = mn,好了,问题转化为求m+n的最小值
均值不等式
**************************************/
#include <stdio.h>
#include <math.h>
int main()
{long long a,x,sqr,tmp;scanf("%lld",&a);tmp = a*a + 1;sqr = sqrt(tmp);for(x = sqr;x > 0;x--)if(!(tmp % x))break;printf("%lld\n",2*a + x + tmp/x);return 0;
}
OpenJudge百炼-1183-反正切函数的应用-C语言-简单计算相关推荐
- java语言计算圆周率_Java语言简单计算圆周率完整示例
本文实例讲述了Java语言简单计算圆周率完整示例.分享给大家供大家参考,具体如下,希望对大家学习Java语言简单计算圆周率有所帮助. 这两天在网上看到一个题,已知Pi可以用函数4 * (1 – 1/3 ...
- 55天 - 贪心算法 - 田忌赛马问题 openjudge百炼 2287
//模板#include <iostream> #include <cstdio> #include <string> #include <algorithm ...
- R语言dataframe计算满足筛选条件的行的个数(筛选满足条件的数据行并计数):类似于excel的countif函数
R语言dataframe计算满足筛选条件的行的个数(筛选满足条件的数据行并计数):类似于excel的countif函数 目录
- R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战
R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战 目录 R语言相关性计算及使用ggcorrplot包相关性分析热力图可视化分析实战
- c语言 简单编程题,c语言简单编程练习题.doc
c语言简单编程练习题 精品文档 2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言简单编程练习题 然后输出相应的字符. #include #inc ...
- 主流WEB开发语言简单对比(转)
主流WEB开发语言简单对比 原文链接:http://www.uml.org.cn/site/201401091.asp 随着时间的飞逝,随着岁月的流失.从世界上第一台计算机ENIAC诞生至今,已 ...
- C 语言实例 - 计算自然数的和
C 语言实例 - 计算自然数的和自然数是指表示物体个数的数,即由0开始,0,1,2,3,4,--一个接一个,组成一个无穷的集体,即指非负整数. 实例 - 使用 for #include <std ...
- c语言实现连续几个bit位置1,【C语言简单说】四:常量
常量和变量是一种相对的概念,在这里我开始跟大家说说常量和变量的区别.可能前几节的小伙伴们并没有能感受出来,不过有了常量的对比那么将会有很好的理解. ..@_@|||||.. 头昏眼花 常量,就是一些固 ...
- PTA浙大版python程序设计题目集--第1章-3 输出“Python语言简单易学” (10 分)
输入格式: 无 输出格式: 输出一句短语,Python语言简单易学. 如果包含汉字,用"print(s.encode("utf-8"))"输出. 如: s=&q ...
最新文章
- oracle相关操作
- Pycharm增加新安装Python的路径
- Backnbone的入门基础——Backbone的model
- basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解
- Java开发入门教程!java垃圾回收机制描述正确
- [CodeForces]Codeforces Round #432 (Div. 2)
- Power BI for Office 365 概览
- English trip M1 - AC11 I Dreamed a Dream? 我做了一个梦 Teacher:Lamb
- Flask租房项目总结
- 数据库的系统组成包括哪些?
- oracle rac实现,炼数成金Oracle 12C RAC集群原理与管理实战 16课
- frangi黑森矩阵_消灭黑森臭虫
- 软件项目延期,怎么办?
- 一起来看看,除夕夜有哪些走心的文案?
- Homework 1 : Knowledge items of C++ (part 1)
- 北航2020级算法上机 C1-I 对抗 题解
- python中init方法的两个下划线_为什么Python中有各种各样的“_”下划线?分别有什么用?...
- JavaSE学习---I/O流学习分享
- Marktext语法——Emoji表情大全
- JS读取json 文件
热门文章
- UnRAR.dll解压rar文件
- 【小程序开发原创】小程序裁剪图片上传头像,二维码源码
- 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
- 嵌入式RTSP转RTMP设备说明
- Foo,getName题解分析
- rasp 系统_一类PHP RASP实现
- 用python一键生成动画(上)
- 学习计算机网络的几个好网站
- 视觉SLAM十四讲学习笔记——第十三讲 实践:设计SLAM系统
- 活体检测——Oulu-NPU数据集