兰州烧饼
时间限制:1000 ms  |  内存限制:65535 KB
难度:1

描述
    烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只能弄一个的话,效率就太低了。有这么一个大平底锅,一次可以同时放入k个兰州烧饼,一分钟能做好一面。而现在有n个兰州烧饼,至少需要多少分钟才能全部做好呢?

输入
    依次输入n和k,中间以空格分隔,其中1 <= k,n <= 100000
输出
    输出全部做好至少需要的分钟数
样例输入

    3 2

样例输出

    3

提示
    如样例,三个兰州烧饼编号a,b,c,首先a和b,然后a和c,最后b和c,3分钟完成
题目

 

被这道题吓到了,看起来很复杂

这道题的思路就是要充分利用锅子,尽量不让它空
每个烧饼有两个面,暂时把一个烧饼看成两个烧饼编号相同
假设2*n%k=0,则n个烧饼可以刚好用完2*n/k个锅子没有空。
否则最后还有剩余,在刚才的结果上要再加上一个锅子
好了,还有一个条件没有考虑,就是编号一样的饼不能在同一个锅子里。
首先要是饼的个数大于锅子的取值范围,能不能保证上面假设的正确性呢?要保证每一次饼的编号不一致,虽然代码AC了,但这个地方并没有能证明。
要是饼的个数小于等于锅子的取值范围,必定要煎两次,饼有两面,最少也是两次。
#include <iostream>

using namespace std;

int main()
{
    int n,k;
    while(cin >> n >> k)
    {
              if(n <= k)
                  cout << 2 << endl;
              else
                 if((2*n)%k>0)
                    cout << (2*n/k) +1 << endl;
              else
                 if((2*n)%k == 0)
                    cout << n*2/k << endl; 
                    }
    return 0;
}