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刀
代码如下:
给你一块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; }
相关文章推荐
- 【C语言】21-结构体
- 华为机试---数独
- android之HttpURLConnection 字段解析
- SDWebImage
- No such file or directory没有这个文件
- 玩转linux主机--Openstack部署
- 洛谷P1262
- ecshop 分页增加自定义参数,以投票页面为例
- iOS开发教程之Objc Runtime笔记
- HandlerThread
- 样式总结
- Python中pip的安装
- Retrofit 动态参数(Get、Post请求)
- 【设计模式】单例模式
- UIWebView和UICollectionViewController的使用
- mysql日期查询操作
- 【剑指offer】旋转数组的最小数字
- 【Linux】gdb调试程序基本用法
- 用shell脚本编写进度条
- Java 8:不动点