练习二 1003 PIE
2016-04-17 20:45
225 查看
题意:有F个人分N块面积可能不同的披萨,要求每人分的面积相同,而且披萨切开后不能重组,求出每人分到披萨的最大面积。
解题思路:根据已知的披萨的总面积可求出每个人可分到的最大面积,以及最小面积0,由此可知所要求的每人分到的披萨的最大面积就在个范围内,再通过二分法取最大面积的中值,不断缩小x所在范围,最终可求得x的值。
感想:可用函数cos(-1,0)求得π的值,注意F为整形变量,最后这个题与1001是一类题目。
代码如下:
解题思路:根据已知的披萨的总面积可求出每个人可分到的最大面积,以及最小面积0,由此可知所要求的每人分到的披萨的最大面积就在个范围内,再通过二分法取最大面积的中值,不断缩小x所在范围,最终可求得x的值。
感想:可用函数cos(-1,0)求得π的值,注意F为整形变量,最后这个题与1001是一类题目。
代码如下:
#include<iostream> #include<iomanip> #include<cmath> using namespace std; #define PI acos(-1.0); int a[10005]; int main() { int M,N,F,f,i,max; double left,right,mid,x; cin>>M; while(M--) { x=0;max=0; cin>>N>>F; for(i=0;i<N;i++) { cin>>a[i]; a[i]=a[i]*a[i]; max=a[i]>max?a[i]:max; } left=0.0;right=max;mid=(left+right)/2; while(fabs(left-right)>1e-8) { f=0; for(i=0;i<N;i++) f+=(int)(a[i]/mid); if(f>=(F+1)) { x=mid; left=mid; } else { right=mid; } mid=(left+right)/2; } x=x*PI; cout<<fixed<<setprecision(4)<<x<<endl; } return 0; }
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Sql Server中REPLACE函数的使用
- PowerShell函数简明教程