您的位置:首页 > 其它

UVA 10970-Big Chocolate

2016-06-16 20:53 190 查看
题目:
  给你一块M*N的巧克力,问把它切成最小单元需要最少切几刀,分开的就不能一起切了.

分析:
  每次切割只能多产生一个部分,分成M*N个部分,必然要切M*N-1刀.

  一个长为m宽为n的长方形和m*n个单位为1的正方形的面积相等,可知一个长方形变成m*n个正方形,面积是一直没变,

  所以可以不用考虑面积对结果的影响,只需考虑刀数的影响;

  切一刀一个就变两个,所以一个长方形变成m*n个正方形(边长为1)至少需要切m*n-1刀

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <iterator>
#include <vector>

using namespace std;

#define LL long long
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define MAXN 10000010
#define MAXM 1000010

int main()
{
int n, m;
while(scanf("%d%d", &n, &m)!= EOF&&n&&m)
{
printf("%d\n", n*m-1);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: