这道题就是把蛋糕换成了棋盘,本质没变
原题:https://www.luogu.com.cn/problem/P6337
题目描述
在一个矩形棋盘上,切与矩形的边平行的 n n n 次,问最多棋盘能被切成多少块?
输入格式
输入一行一个整数 n n n。
输出格式
输出一行一个整数表示棋盘最多被分成的块数。
样例 #1
样例输入 #1
1
样例输出 #1
2
样例 #2
样例输入 #2
3
样例输出 #2
6
提示
数据规模与约定
对于
100
%
100\%
100% 的数据,保证
1
≤
n
≤
100
1\le n\le 100
1≤n≤100。
思路:
上面图片的的切法都是获得块数最大的方法
其实切2刀还会有这种情况:
我们可以发现,如果都是平行于矩形的一条边来切,这样没有一横一竖交叉切所得块数多。
如果是交叉切,就要 按横竖横竖横竖… 或者 竖横竖横竖横… 的顺序来,这样会保证所得块数最多。
#include<iostream>
using namespace std;
int main(){
int n,he=0;
cin>>n;
if(n%2!=0)
he+=(((n+1)/2)*((n+1)/2+1));
else
he+=(((n+2)/2)*((n+2)/2));
cout<<he;
return 0;
}
还有一种对于奇数偶数都适用的公式:
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
cout<<(n/2+1)*(n-n/2+1);//公式
}