NYOJ_779兰州烧饼

来源:互联网 发布:java资源库社区 编辑:程序博客网 时间:2024/04/28 16:14

兰州烧饼

描述
烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只能弄一个的话,效率就太低了。有这么一个大平底锅,一次可以同时放入k个兰州烧饼,一分钟能做好一面。而现在有n个兰州烧饼,至少需要多少分钟才能全部做好呢?
输入
依次输入n和k,中间以空格分隔,其中1 <= k,n <= 100000
输出
输出全部做好至少需要的分钟数
样例输入
3 2
样例输出
3
提示
如样例,三个兰州烧饼编号a,b,c,首先a和b,然后a和c,最后b和c,3分钟完成
代码:
#include<iostream>#include<math.h>#include<stdio.h>using namespace std;int main(){int n,m;while(cin>>n>>m){int w=0;w=ceil(n*2.0/m);if(n<=m)cout<<2<<endl;elsecout<<w<<endl;}return 0;}
思路解析:
关于两个数之间的关系。纯粹数学问题。。。
找规律:( n    m   x )
3 2 3
4 2 4
5 2 5
6 2 6
3 3 2
4 3 3
5 3 4
6 3 4
7 3 4
8 3 6
当m=2时,x=n*2/m;可是,当m=3时,却不符合这个公式,x>(n*2/m),却是最接近大于(n*2/m)的整数;
所以<math.h>中的ceil()函数的作用就体现了。
ceil()函数:
函数名: ceil
用 法: double ceil(double x);
功 能: 返回大于或者等于指定表达式的最小整数
头文件:math.h
说明
float ceil ( float value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
由于题目中要求的数值没超出int()型范围,所以用int()型即可。。。

0 0
原创粉丝点击